Update Saqel Platform: 2026-08-31 00:19:49
This commit is contained in:
@@ -327,10 +327,10 @@ class AuthController
|
||||
// 30 days token expiry
|
||||
$token = Security::generateJWT($payload, 30 * 86400);
|
||||
|
||||
// Single Session Enforcement: Store active session in Redis
|
||||
// Single Session Enforcement: Store active session in Redis (Role-isolated)
|
||||
try {
|
||||
$redis = RedisClient::getInstance();
|
||||
$sessionKey = "active_session:{$userId}";
|
||||
$sessionKey = "active_session:{$role}:{$userId}";
|
||||
$redis->setex($sessionKey, 30 * 86400, json_encode([
|
||||
'token_signature' => substr($token, -32),
|
||||
'device_fingerprint' => $deviceFingerprint,
|
||||
@@ -657,10 +657,12 @@ class AuthController
|
||||
public function logout(Request $request, Response $response): void
|
||||
{
|
||||
$userId = $request->user_id;
|
||||
$role = $request->role ?? 'student';
|
||||
if ($userId) {
|
||||
try {
|
||||
$redis = RedisClient::getInstance();
|
||||
$redis->del("active_session:{$userId}");
|
||||
$redis->del("active_session:{$role}:{$userId}");
|
||||
$redis->del("active_session:{$userId}"); // Clean up legacy key if present
|
||||
} catch (\Exception $e) {
|
||||
error_log("Logout Redis error: " . $e->getMessage());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user