diff --git a/lib/admin.php b/lib/admin.php index dc34182..f2ce49d 100644 --- a/lib/admin.php +++ b/lib/admin.php @@ -40,7 +40,8 @@ function admin_add(string $login, string $password): int { $db = DB(); $db->insert('admins', [ 'login' => $login, - 'password' => salt_password($password) + 'password' => salt_password($password), + 'activity_ts' => 0 ]); return $db->insertId(); } @@ -95,6 +96,8 @@ function admin_auth(string $login, string $password): bool { 'ua' => $_SERVER['HTTP_USER_AGENT'] ?? '', ]); + $db->query("UPDATE admins SET activity_ts=? WHERE id=?", $time, $id); + $AdminSession->id = $id; $AdminSession->login = $login; $AdminSession->makeCSRFSalt($salted_password); @@ -127,9 +130,11 @@ function _admin_check(): void { $cookie = (string)$_COOKIE[ADMIN_COOKIE_NAME]; $db = DB(); + $time = time(); $q = $db->query("SELECT admin_auth.id AS auth_id, admin_auth.admin_id AS id, + admins.activity_ts AS activity_ts, admins.password AS salted_password, admins.login AS login FROM admin_auth @@ -147,6 +152,9 @@ function _admin_check(): void { $AdminSession->login = $info['login']; $AdminSession->authId = (int)$info['auth_id']; $AdminSession->makeCSRFSalt($info['salted_password']); + + if ($time - $info['activity_ts'] > 15) + $db->query("UPDATE admins SET activity_ts=? WHERE id=?", $time, $AdminSession->id); } function _admin_set_cookie(string $token): void {