From 5e8d72c40d0d69f8e5c355dcacf860fbc97e002e Mon Sep 17 00:00:00 2001 From: Julio Cesar Laura Date: Thu, 19 Dec 2013 10:03:35 -0400 Subject: [PATCH] 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 --- gulliver/system/class.bootstrap.php | 2 +- workflow/public_html/sysGeneric.php | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gulliver/system/class.bootstrap.php b/gulliver/system/class.bootstrap.php index 7511bfdc8..2e61e4e44 100644 --- a/gulliver/system/class.bootstrap.php +++ b/gulliver/system/class.bootstrap.php @@ -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) { diff --git a/workflow/public_html/sysGeneric.php b/workflow/public_html/sysGeneric.php index 4f5f50af4..93793bd0c 100755 --- a/workflow/public_html/sysGeneric.php +++ b/workflow/public_html/sysGeneric.php @@ -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'] );