config = require 'config.php'; } public function isAuthenticated() { if (!isset($_SESSION['auth_time']) || !isset($_SESSION['username'])) { return false; } // Vérifier si la session n'a pas expiré $elapsed = time() - $_SESSION['auth_time']; if ($elapsed > $this->config['session_duration']) { $this->logout(); return false; } return true; } public function login($username, $password) { if (!isset($this->config['users'][$username])) { return false; } if ($this->config['users'][$username]['password'] === $password) { $_SESSION['auth_time'] = time(); $_SESSION['username'] = $username; $_SESSION['user_description'] = $this->config['users'][$username]['description']; return true; } return false; } public function logout() { session_destroy(); } public function getCurrentUser() { if ($this->isAuthenticated()) { return [ 'username' => $_SESSION['username'], 'description' => $_SESSION['user_description'] ]; } return null; } } // Point d'entrée API pour l'authentification if ($_SERVER['REQUEST_METHOD'] === 'POST') { header('Content-Type: application/json'); $auth = new Auth(); $data = json_decode(file_get_contents('php://input'), true); if (isset($data['action'])) { switch ($data['action']) { case 'login': if (isset($data['username']) && isset($data['password'])) { $success = $auth->login($data['username'], $data['password']); if ($success) { $user = $auth->getCurrentUser(); echo json_encode(['success' => true, 'user' => $user]); } else { echo json_encode(['success' => false, 'error' => 'Identifiants incorrects']); } } else { echo json_encode(['success' => false, 'error' => 'Identifiants manquants']); } break; case 'logout': $auth->logout(); echo json_encode(['success' => true]); break; case 'check': $isAuthenticated = $auth->isAuthenticated(); $user = $isAuthenticated ? $auth->getCurrentUser() : null; echo json_encode([ 'authenticated' => $isAuthenticated, 'user' => $user ]); break; } } exit; } ?>