diff --git a/application/loginform.class.inc.php b/application/loginform.class.inc.php index 51f1e3832..4b55ca757 100644 --- a/application/loginform.class.inc.php +++ b/application/loginform.class.inc.php @@ -51,10 +51,8 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension $this->bForceFormOnError = false; exit; } - Session::Start(); Session::Set('login_temp_auth_user', $sAuthUser); Session::Set('login_mode', 'form'); - Session::WriteClose(); } return LoginWebPage::LOGIN_FSM_CONTINUE; } diff --git a/application/loginwebpage.class.inc.php b/application/loginwebpage.class.inc.php index 4e3cc7c56..6dec4e565 100644 --- a/application/loginwebpage.class.inc.php +++ b/application/loginwebpage.class.inc.php @@ -394,14 +394,12 @@ class LoginWebPage extends NiceWebPage public static function ResetSession() { // Unset all of the session variables. - Session::Start(); Session::Unset('auth_user'); Session::Unset('login_state'); Session::Unset('can_logoff'); Session::Unset('archive_mode'); Session::Unset('impersonate_user'); UserRights::_ResetSessionCache(); - Session::WriteClose(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! } @@ -669,10 +667,8 @@ class LoginWebPage extends NiceWebPage $oLog->DBInsertNoReload(); } - Session::Start(); Session::Set('auth_user', $sAuthUser); Session::Set('login_mode', $sLoginMode); - Session::WriteClose(); UserRights::_InitSessionCache(); } @@ -1017,7 +1013,6 @@ class LoginWebPage extends NiceWebPage $sMessage = self::HandleOperations($operation); // May exit directly $iRet = self::Login($iOnExit); - if ($iRet == self::EXIT_CODE_OK) { if ($bMustBeAdmin && !UserRights::IsAdministrator()) diff --git a/application/startup.inc.php b/application/startup.inc.php index 534212a7e..c414f2251 100644 --- a/application/startup.inc.php +++ b/application/startup.inc.php @@ -68,9 +68,10 @@ register_shutdown_function(function() } } }); - +$oKPI = new ExecutionKPI(); Session::Start(); Session::WriteClose(); +$oKPI->ComputeAndReport("Session Start"); $sSwitchEnv = utils::ReadParam('switch_env', null); $bAllowCache = true; diff --git a/core/userrights.class.inc.php b/core/userrights.class.inc.php index 448f64027..2a8f22cd5 100644 --- a/core/userrights.class.inc.php +++ b/core/userrights.class.inc.php @@ -1795,10 +1795,6 @@ class UserRights self::$m_aAdmins = array(); self::$m_aPortalUsers = array(); } - if (!utils::IsModeCLI()) - { - Session::Start(); - } self::_ResetSessionCache(); if (self::$m_oAddOn) { @@ -1905,10 +1901,8 @@ class UserRights public static function _ResetSessionCache() { - Session::Start(); Session::Unset('profile_list'); Session::Unset('archive_allowed'); - Session::WriteClose(); } /** diff --git a/datamodels/2.x/authent-cas/src/CASLoginExtension.php b/datamodels/2.x/authent-cas/src/CASLoginExtension.php index 3c6fe7839..71a8e1277 100644 --- a/datamodels/2.x/authent-cas/src/CASLoginExtension.php +++ b/datamodels/2.x/authent-cas/src/CASLoginExtension.php @@ -49,7 +49,6 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte { if (Session::Get('login_mode') == 'cas') { - Session::Start(); static::InitCASClient(); if (phpCAS::isAuthenticated()) { @@ -72,7 +71,6 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte Session::Set('login_mode', 'cas'); phpCAS::forceAuthentication(); // Redirect to CAS and exit } - Session::WriteClose(); } return LoginWebPage::LOGIN_FSM_CONTINUE; } diff --git a/pages/exec.php b/pages/exec.php index e271f3972..37831d4d1 100644 --- a/pages/exec.php +++ b/pages/exec.php @@ -43,9 +43,11 @@ if ($sPage == '') } $sPage = basename($sPage); // protect against ../.. ... +$oKPI = new ExecutionKPI(); Session::Start(); $sEnvironment = utils::ReadParam('exec_env', utils::GetCurrentEnvironment()); Session::WriteClose(); +$oKPI->ComputeAndReport("Session Start"); $sTargetPage = APPROOT.'env-'.$sEnvironment.'/'.$sModule.'/'.$sPage; diff --git a/sources/application/Helper/Session.php b/sources/application/Helper/Session.php index 970803475..5a8a820c2 100644 --- a/sources/application/Helper/Session.php +++ b/sources/application/Helper/Session.php @@ -7,8 +7,6 @@ namespace Combodo\iTop\Application\Helper; -use ExecutionKPI; - /** * Session management * Allow early session close to have multiple ajax calls in parallel @@ -26,7 +24,6 @@ class Session { self::$bIsInitialized = true; if (!self::$bSessionStarted) { - $oKPI = new ExecutionKPI(); session_name('itop-'.md5(APPROOT)); if (!is_null(self::$iSessionId)) { session_id(self::$iSessionId); @@ -35,17 +32,14 @@ class Session self::$bSessionStarted = session_start(); self::$iSessionId = session_id(); } - $oKPI->ComputeAndReport("Session Start"); } } public static function WriteClose() { if (self::$bSessionStarted) { - $oKPI = new ExecutionKPI(); session_write_close(); self::$bSessionStarted = false; - $oKPI->ComputeAndReport("Session Write Close"); } } @@ -55,6 +49,9 @@ class Session */ public static function Set($key, $value) { + if (self::Get($key) == $value) { + return; + } $aSession = $_SESSION; $sSessionVar = &$aSession; if (is_array($key)) {