isAllowedUrl($redirectUri)) { die("Accès non autorisé : l'URL de redirection n'est pas approuvée."); } // Procéder à l'authentification (ex : vérifiez les identifiants de l'utilisateur ici) $userId = 123; // ID utilisateur récupéré après authentification $email = 'user@example.com'; // Email de l'utilisateur // Générer le token JWT pour l'utilisateur authentifié $token = $this->generateToken($userId, $email); // Rediriger vers la plateforme de cours avec le token header("Location: $redirectUri?token=" . urlencode($token)); exit; } // Vérifie si l'URL est dans la liste des URLs autorisées private function isAllowedUrl($redirectUri) { foreach ($this->allowedUrls as $allowedUrl) { if (strpos($redirectUri, $allowedUrl) === 0) { return true; } } return false; } // Génération du token JWT private function generateToken($userId, $email) { $issuedAt = time(); $expirationTime = $issuedAt + 3600; // Jeton valide pour 1 heure $payload = [ 'iat' => $issuedAt, 'exp' => $expirationTime, 'sub' => $userId, 'email' => $email, ]; return JWT::encode($payload, $this->secretKey, 'HS256'); } // Endpoint pour valider le token public function validateToken() { $headers = getallheaders(); $token = $headers['Authorization'] ?? ''; if ($this->decodeToken($token)) { echo 'valid'; } else { http_response_code(401); echo 'invalid'; } } // Décodage et validation du token private function decodeToken($jwt) { try { return JWT::decode($jwt, new Key($this->secretKey, 'HS256')); } catch (Exception $e) { return null; } } // Endpoint pour récupérer les informations utilisateur public function userInfo() { $headers = getallheaders(); $token = $headers['Authorization'] ?? ''; $decodedToken = $this->decodeToken($token); if ($decodedToken) { echo json_encode([ 'id' => $decodedToken->sub, 'email' => $decodedToken->email, 'name' => 'Nom Utilisateur', // Ajouter d'autres infos si nécessaire ]); } else { http_response_code(401); echo 'Unauthorized'; } } } ?>