diff --git a/include/class.ostsession.php b/include/class.ostsession.php index 94df679d2792046fda2b7373e598851f147a501b..b300f16ec7a826443e3e1fb52530a7c88bd6486b 100644 --- a/include/class.ostsession.php +++ b/include/class.ostsession.php @@ -69,6 +69,23 @@ class osTicketSession { $this->destroy($oldId); } + static function destroyCookie() { + setcookie(session_name(), 'deleted', 1, + ini_get('session.cookie_path'), + ini_get('session.cookie_domain'), + ini_get('session.cookie_secure'), + ini_get('session.cookie_httponly')); + } + + static function renewCookie($baseTime=false, $window=false) { + setcookie(session_name(), session_id(), + ($baseTime ?: time()) + ($window ?: SESSION_TTL), + ini_get('session.cookie_path'), + ini_get('session.cookie_domain'), + ini_get('session.cookie_secure'), + ini_get('session.cookie_httponly')); + } + function open($save_path, $session_name){ return (true); } diff --git a/include/class.usersession.php b/include/class.usersession.php index 9e7fd277baf58d59b39ade1255bd29a1308493a4..9447c109f784af9273642943158019f24e2d07b4 100644 --- a/include/class.usersession.php +++ b/include/class.usersession.php @@ -133,6 +133,8 @@ class ClientSession extends EndUser { } function refreshSession($force=false){ + global $cfg; + $time = $this->session->getLastUpdate($this->token); // Deadband session token updates to once / 30-seconds if (!$force && time() - $time < 30) @@ -140,6 +142,8 @@ class ClientSession extends EndUser { $this->token = $this->getSessionToken(); //TODO: separate expire time from hash?? + + osTicketSession::renewCookie($time, $cfg->getClientSessionTimeout()); } function getSession() { @@ -177,12 +181,16 @@ class StaffSession extends Staff { } function refreshSession($force=false){ + global $cfg; + $time = $this->session->getLastUpdate($this->token); // Deadband session token updates to once / 30-seconds if (!$force && time() - $time < 30) return; $this->token=$this->getSessionToken(); + + osTicketSession::renewCookie($time, $cfg->getStaffSessionTimeout()); } function getSession() { diff --git a/logout.php b/logout.php index 74d73cc377b58049f286551771ff880dfc800fab..9fb8037acd458c9998c126d6d17ec533fbac7b57 100644 --- a/logout.php +++ b/logout.php @@ -19,6 +19,7 @@ require('client.inc.php'); if ($thisclient && $_GET['auth'] && $ost->validateLinkToken($_GET['auth'])) $thisclient->logOut(); +osTicketSession::destroyCookie(); Http::redirect('index.php'); ?> diff --git a/scp/logout.php b/scp/logout.php index bdc697c78beceb7b4cf3185603f45afbcf8d2838..1007d985c0bb8509514f42d55d91103571b3f965 100644 --- a/scp/logout.php +++ b/scp/logout.php @@ -31,6 +31,8 @@ TicketLock::removeStaffLocks($thisstaff->getId()); session_unset(); session_destroy(); +osTicketSession::destroyCookie(); + @header('Location: login.php'); require('login.php'); ?>