BUG 13552 IE issue in the tool SOLVED

- Cuando la hora del cliente difiere mucho de la hora del servidor, provoca que IE no considere como valida la cookie de la sesion por lo tanto no se puede ingresar al Sistema

- Si bien este se puede arreglar cambiando la hora del servidor o bien de la del cliente, se ha agregado una variable de configuracion a ProcessMaker en el archivo env.ini la cual deshabilita que se setee un tiempo de vida a la cookie cuando se usa el browser IE, de esta manera ya no se presenta el issue, la variable se llama "ie_cookie_lifetime" y sus posibles valores son 1 y 0, por defecto esta en 1, cuando se coloque esta variable en 0 ya no se aplica a la cookie el lifetime

NOTA.- El control de tiempo de duracion de las sesiones deberia controlarse de otra forma y no como se esta haciendo actualmente que depende del tiempo de duracion de las cookies, este cambio mas complejo requiere un refactor de la parte de autentificacion y se lo hara en futuras versiones de PM
This commit is contained in:
Julio Cesar Laura
2013-12-19 10:03:35 -04:00
parent aa69448003
commit 5e8d72c40d
2 changed files with 16 additions and 10 deletions

View File

@@ -85,7 +85,7 @@ class Bootstrap
}
// default configuration
$config = array('debug' => 0, 'debug_sql' => 0, 'debug_time' => 0, 'debug_calendar' => 0, 'wsdl_cache' => 1, 'memory_limit' => "256M", 'time_zone' => 'America/New_York', 'memcached' => 0, 'memcached_server' => '', 'default_skin' => 'neoclassic', 'default_lang' => 'en', 'proxy_host' => '', 'proxy_port' => '', 'proxy_user' => '', 'proxy_pass' => '' , 'size_log_file' => 5000000 , 'number_log_file' => 5);
$config = array('debug' => 0, 'debug_sql' => 0, 'debug_time' => 0, 'debug_calendar' => 0, 'wsdl_cache' => 1, 'memory_limit' => "256M", 'time_zone' => 'America/New_York', 'memcached' => 0, 'memcached_server' => '', 'default_skin' => 'neoclassic', 'default_lang' => 'en', 'proxy_host' => '', 'proxy_port' => '', 'proxy_user' => '', 'proxy_pass' => '' , 'size_log_file' => 5000000 , 'number_log_file' => 5, 'ie_cookie_lifetime' => 1);
// read the global env.ini configuration file
if ($readGlobalIniFile && ($globalConf = @parse_ini_file($globalIniFile)) !== false) {

View File

@@ -280,7 +280,9 @@ if (is_null($timelife)) {
$timelife = 1440;
}
ini_set('session.gc_maxlifetime', $timelife);
ini_set('session.cookie_lifetime', $timelife);
if (preg_match("/msie/i", $_SERVER ['HTTP_USER_AGENT']) != 1 || $config['ie_cookie_lifetime'] == 1) {
ini_set('session.cookie_lifetime', $timelife);
}
session_start();
@@ -881,10 +883,12 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
define( 'SYS_LANG_DIRECTION', $oServerConf->getLanDirection() );
if ((isset( $_SESSION['USER_LOGGED'] )) && (! (isset( $_GET['sid'] )))) {
if (PHP_VERSION < 5.2) {
setcookie(session_name(), session_id(), time() + $timelife, '/', '; HttpOnly');
} else {
setcookie(session_name(), session_id(), time() + $timelife, '/', null, false, true);
if (preg_match("/msie/i", $_SERVER ['HTTP_USER_AGENT']) != 1 || $config['ie_cookie_lifetime'] == 1) {
if (PHP_VERSION < 5.2) {
setcookie(session_name(), session_id(), time() + $timelife, '/', '; HttpOnly');
} else {
setcookie(session_name(), session_id(), time() + $timelife, '/', null, false, true);
}
}
$RBAC->initRBAC();
//using optimization with memcache, the user data will be in memcache 8 hours, or until session id goes invalid
@@ -948,10 +952,12 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
$_SESSION['USER_LOGGED'] = $aUser['USR_UID'];
$_SESSION['USR_USERNAME'] = $aUser['USR_USERNAME'];
$bRedirect = false;
if (PHP_VERSION < 5.2) {
setcookie(session_name(), session_id(), time() + $timelife, '/', '; HttpOnly');
} else {
setcookie(session_name(), session_id(), time() + $timelife, '/', null, false, true);
if (preg_match("/msie/i", $_SERVER ['HTTP_USER_AGENT']) != 1 || $config['ie_cookie_lifetime'] == 1) {
if (PHP_VERSION < 5.2) {
setcookie(session_name(), session_id(), time() + $timelife, '/', '; HttpOnly');
} else {
setcookie(session_name(), session_id(), time() + $timelife, '/', null, false, true);
}
}
$RBAC->initRBAC();
$RBAC->loadUserRolePermission( $RBAC->sSystem, $_SESSION['USER_LOGGED'] );