'Non authentifié - Veuillez vous connecter'], 401); exit; } } // Vérification optionnelle de l'activité public static function checkActivity(): void { $inactiveTime = 3600; // 1 heure if ( isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > $inactiveTime) ) { self::logout(); Response::json(['error' => 'Session expirée'], 440); exit; } $_SESSION['last_activity'] = time(); } // Récupère le session_id du Bearer token et le définit comme session_id courant private static function getSessionFromBearer(): void { // Vérifier si le header Authorization est présent $authHeader = $_SERVER['HTTP_AUTHORIZATION'] ?? ''; // Mettre toutes les erreurs dans un fichier de log dédié $logFile = __DIR__ . '/../../logs/session_' . date('Y-m-d') . '.log'; file_put_contents($logFile, date('Y-m-d H:i:s') . " - Auth Header: " . $authHeader . "\n", FILE_APPEND); // Nettoyage du header d'autorisation $authHeader = trim($authHeader); // Support de plusieurs formats possibles if (strpos($authHeader, 'Bearer ') === 0) { // Format standard "Bearer token" $sessionId = substr($authHeader, 7); } elseif (strpos(strtolower($authHeader), 'bearer ') === 0) { // Cas insensible à la casse $sessionId = substr($authHeader, 7); } elseif (preg_match('/^bearer\s+(.*)$/i', $authHeader, $matches)) { // Utilisation de l'expression régulière $sessionId = $matches[1]; } else { file_put_contents($logFile, date('Y-m-d H:i:s') . " - No Bearer token found in Authorization header\n", FILE_APPEND); return; } // Nettoyage du token $sessionId = trim($sessionId); file_put_contents($logFile, date('Y-m-d H:i:s') . " - Session ID extracted: " . $sessionId . "\n", FILE_APPEND); // Vérifier que le session_id a un format valide (alphanumerique avec quelques caractères spéciaux) // Attention: les sessions en PHP peuvent contenir des caractères non-alphanumériques // Assouplir les règles de validation si nécessaire if (!empty($sessionId) && strlen($sessionId) <= 128) { // Définir l'ID de session avant de démarrer la session session_id($sessionId); file_put_contents($logFile, date('Y-m-d H:i:s') . " - Session ID set: " . $sessionId . "\n", FILE_APPEND); } else { file_put_contents($logFile, date('Y-m-d H:i:s') . " - Invalid session ID format in Bearer token\n", FILE_APPEND); } } }