getTimestampUTC(); $_SESSION[self::USER_NAME_SESSION_VAR_NAME] = $userName; $_SESSION[self::SESSION_INFO_TWO_FACTOR_AUTH_VERIFIED] = 0; $_SESSION[self::SESSION_INFO_TEMP_TOKEN_AUTH] = $tokenAuth; $_SESSION[self::SESSION_INFO_SESSION_VAR_NAME] = [ 'ts' => $time, 'remembered' => $isRemembered, 'expiration' => $this->getExpirationTimeFromNow($time), ]; } public function clear() { if (isset($_SESSION[self::USER_NAME_SESSION_VAR_NAME])) { // may not be available during tests unset($_SESSION[self::USER_NAME_SESSION_VAR_NAME]); } if (isset($_SESSION[self::SESSION_INFO_SESSION_VAR_NAME])) { // may not be available during tests unset($_SESSION[self::SESSION_INFO_SESSION_VAR_NAME]); } if (isset($_SESSION[self::SESSION_INFO_TWO_FACTOR_AUTH_VERIFIED])) { // may not be available during tests unset($_SESSION[self::SESSION_INFO_TWO_FACTOR_AUTH_VERIFIED]); } if (isset($_SESSION[self::SESSION_INFO_TEMP_TOKEN_AUTH])) { // may not be available during tests unset($_SESSION[self::SESSION_INFO_TEMP_TOKEN_AUTH]); } } public function getSessionStartTime() { $userInfo = $this->getUserInfo(); if (empty($userInfo) || empty($userInfo['ts']) ) { return null; } return $userInfo['ts']; } public function getExpirationTime() { $userInfo = $this->getUserInfo(); if (empty($userInfo) || empty($userInfo['expiration']) ) { return null; } return $userInfo['expiration']; } public function isRemembered() { $userInfo = $this->getUserInfo(); return !empty($userInfo['remembered']); } public function updateSessionExpirationTime() { $_SESSION[self::SESSION_INFO_SESSION_VAR_NAME]['expiration'] = $this->getExpirationTimeFromNow(); } private function getExpirationTimeFromNow($time = null) { $time = $time ?: Date::now()->getTimestampUTC(); $general = Config::getInstance()->General; if (!isset($general['login_session_not_remembered_idle_timeout']) || (int) $general['login_session_not_remembered_idle_timeout'] <= 0 ) { $nonRememberedSessionExpireTime = self::DEFAULT_IDLE_TIMEOUT; } else { $nonRememberedSessionExpireTime = (int) $general['login_session_not_remembered_idle_timeout']; } $sessionCookieLifetime = $general['login_cookie_expire']; if ($this->isRemembered()) { $expireDuration = $sessionCookieLifetime; } else { $expireDuration = $nonRememberedSessionExpireTime; } return $time + $expireDuration; } }