Update: 2026-05-03 20:45:16
This commit is contained in:
@@ -17,10 +17,26 @@ require_once APP_PATH . '/bootstrap/env.php';
|
|||||||
require_once APP_PATH . '/helpers/helpers.php';
|
require_once APP_PATH . '/helpers/helpers.php';
|
||||||
|
|
||||||
// 4. Core Classes (Manual autoload for simplicity)
|
// 4. Core Classes (Manual autoload for simplicity)
|
||||||
require_once APP_PATH . '/core/Database.php';
|
spl_autoload_register(function ($class) {
|
||||||
require_once APP_PATH . '/core/JWT.php';
|
$prefix = 'App\\';
|
||||||
require_once APP_PATH . '/core/Security.php';
|
$base_dir = APP_PATH . '/';
|
||||||
require_once APP_PATH . '/core/Validator.php';
|
|
||||||
|
$len = strlen($prefix);
|
||||||
|
if (strncmp($prefix, $class, $len) !== 0) return;
|
||||||
|
|
||||||
|
$relative_class = substr($class, $len);
|
||||||
|
|
||||||
|
// Normalize path to lowercase for directories, keep filename case
|
||||||
|
$parts = explode('\\', $relative_class);
|
||||||
|
$filename = array_pop($parts) . '.php';
|
||||||
|
$dir = strtolower(implode('/', $parts));
|
||||||
|
|
||||||
|
$file = $base_dir . ($dir ? $dir . '/' : '') . $filename;
|
||||||
|
|
||||||
|
if (file_exists($file)) {
|
||||||
|
require $file;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// 5. Response Utility
|
// 5. Response Utility
|
||||||
require_once APP_PATH . '/bootstrap/response.php';
|
require_once APP_PATH . '/bootstrap/response.php';
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ $token = JWT::encode($payload, $secret);
|
|||||||
|
|
||||||
// 4. Update Refresh Token (Simple stored in DB as requested)
|
// 4. Update Refresh Token (Simple stored in DB as requested)
|
||||||
$refreshToken = bin2hex(random_bytes(32));
|
$refreshToken = bin2hex(random_bytes(32));
|
||||||
$stmt = $db->prepare("UPDATE users SET refresh_token = ? WHERE id = ?");
|
$stmt = $db->prepare("UPDATE users SET refresh_token_hash = ? WHERE id = ?");
|
||||||
$stmt->execute([$refreshToken, $user['id']]);
|
$stmt->execute([$refreshToken, $user['id']]);
|
||||||
|
|
||||||
json_success([
|
json_success([
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ $userId = $decoded['user_id'];
|
|||||||
|
|
||||||
// 2. Invalidate Refresh Token
|
// 2. Invalidate Refresh Token
|
||||||
$db = Database::getInstance();
|
$db = Database::getInstance();
|
||||||
$stmt = $db->prepare("UPDATE users SET refresh_token = NULL WHERE id = ?");
|
$stmt = $db->prepare("UPDATE users SET refresh_token_hash = NULL WHERE id = ?");
|
||||||
$stmt->execute([$userId]);
|
$stmt->execute([$userId]);
|
||||||
|
|
||||||
json_success(null, 'تم تسجيل الخروج بنجاح');
|
json_success(null, 'تم تسجيل الخروج بنجاح');
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ if (!$refreshToken) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$db = Database::getInstance();
|
$db = Database::getInstance();
|
||||||
$stmt = $db->prepare("SELECT * FROM users WHERE refresh_token = ? LIMIT 1");
|
$stmt = $db->prepare("SELECT * FROM users WHERE refresh_token_hash = ? LIMIT 1");
|
||||||
$stmt->execute([$refreshToken]);
|
$stmt->execute([$refreshToken]);
|
||||||
$user = $stmt->fetch();
|
$user = $stmt->fetch();
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ $payload = [
|
|||||||
$newToken = JWT::encode($payload, $secret);
|
$newToken = JWT::encode($payload, $secret);
|
||||||
$newRefreshToken = bin2hex(random_bytes(32));
|
$newRefreshToken = bin2hex(random_bytes(32));
|
||||||
|
|
||||||
$stmt = $db->prepare("UPDATE users SET refresh_token = ? WHERE id = ?");
|
$stmt = $db->prepare("UPDATE users SET refresh_token_hash = ? WHERE id = ?");
|
||||||
$stmt->execute([$newRefreshToken, $user['id']]);
|
$stmt->execute([$newRefreshToken, $user['id']]);
|
||||||
|
|
||||||
json_success([
|
json_success([
|
||||||
|
|||||||
Reference in New Issue
Block a user