add autologout session
Tests / PHPUnit (push) Failing after 35s

This commit is contained in:
root
2026-07-30 01:15:53 -04:00
parent 81a72a4c59
commit 8d7ee3b9fc
10 changed files with 138 additions and 58 deletions
@@ -15,11 +15,11 @@ class SessionTimeoutController extends BaseController
return $this->response->setJSON([
'success' => true,
'timeout' => SessionTimeout::TIMEOUT_DURATION,
'warning_time' => SessionTimeout::WARNING_THRESHOLD,
'check_interval' => SessionTimeout::CHECK_INTERVAL,
'logout_url' => site_url('auth/logout'),
'keep_alive_url' => site_url('session/pingActivity'),
'check_url' => site_url('session/checkTimeout')
'warning_time' => SessionTimeout::TIMEOUT_DURATION - SessionTimeout::WARNING_THRESHOLD,
'check_interval' => SessionTimeout::CLIENT_CHECK_INTERVAL,
'logout_url' => site_url('logout'),
'keep_alive_url' => site_url('session/ping-activity'),
'check_url' => site_url('session/check-timeout')
]);
}
@@ -35,9 +35,9 @@ class SessionTimeoutController extends BaseController
$lastActivity = $session->get('last_activity');
$elapsed = time() - $lastActivity;
if ($elapsed > SessionTimeout::TIMEOUT_DURATION) {
if ($elapsed >= SessionTimeout::TIMEOUT_DURATION) {
return $this->expireSession();
} elseif ($elapsed > SessionTimeout::WARNING_THRESHOLD) {
} elseif ($elapsed >= SessionTimeout::WARNING_THRESHOLD) {
return $this->response->setJSON([
'status' => 'warning',
'time_remaining' => SessionTimeout::TIMEOUT_DURATION - $elapsed
@@ -56,7 +56,7 @@ class SessionTimeoutController extends BaseController
// Only update if session is still valid
if (!$session->has('last_activity') ||
(time() - $session->get('last_activity') > SessionTimeout::TIMEOUT_DURATION)) {
(time() - $session->get('last_activity') >= SessionTimeout::TIMEOUT_DURATION)) {
return $this->expireSession();
}
@@ -86,7 +86,8 @@ class SessionTimeoutController extends BaseController
$session->remove('last_activity');
$session->destroy();
// Regenerate session ID for security
session_regenerate_id(true);
if (session_status() === PHP_SESSION_ACTIVE) {
session_regenerate_id(true);
}
}
}
}