File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Models/UserSession.php
Back
<?php /** * UserSession Model * Handles persistent "Remember-Me" tokens */ require_once __DIR__ . '/../Core/Model.php'; class UserSession extends Model { protected string $table = 'user_sessions'; public function createRememberSession(int $userId, int $lifetimeSeconds = 2592000): string { $rawToken = bin2hex(random_bytes(32)); $hashedToken = hash('sha256', $rawToken); $expiresAt = date('Y-m-d H:i:s', time() + $lifetimeSeconds); $this->insert([ 'user_id' => $userId, 'token' => $hashedToken, 'ip_address' => Security::getClientIp(), 'user_agent' => Security::getUserAgent(), 'expires_at' => $expiresAt, 'created_at' => date('Y-m-d H:i:s') ]); return $rawToken; } public function findValidSession(string $rawToken): ?array { $hashedToken = hash('sha256', $rawToken); $sql = "SELECT us.*, u.status as user_status FROM `user_sessions` us JOIN `users` u ON us.user_id = u.id WHERE us.token = :token AND us.expires_at > NOW() AND u.status = 'active' AND u.deleted_at IS NULL LIMIT 1"; return $this->fetchOne($sql, [':token' => $hashedToken]); } public function removeSessionByToken(string $rawToken): void { $hashedToken = hash('sha256', $rawToken); $sql = "DELETE FROM `user_sessions` WHERE `token` = :token"; $this->query($sql, [':token' => $hashedToken]); } public function removeAllForUser(int $userId): void { $sql = "DELETE FROM `user_sessions` WHERE `user_id` = :user_id"; $this->query($sql, [':user_id' => $userId]); } public function getActiveSessions(int $userId): array { $sql = "SELECT * FROM `user_sessions` WHERE `user_id` = :user_id AND `expires_at` > NOW() ORDER BY `created_at` DESC"; return $this->fetchAll($sql, [':user_id' => $userId]); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.25 |
proxy
|
phpinfo
|
Settings