| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- class apiSessionAuthenticator
- {
- private static $cookieFile;
- /**
- * Initialiser les configurations pour l'authentification
- */
- public static function init($loginUrl, $apiBaseUrl, $email, $password)
- {
- // Fichier temporaire pour stocker les cookies de session
- self::$cookieFile = tempnam(sys_get_temp_dir(), 'cookie');
- }
- public static function checkSession()
- {
- if (session::isConnect()) {
- // L'utilisateur est connecté
- return json_encode(['authenticated' => true, 'user' => session::getName()]);
- } else {
- // L'utilisateur n'est pas connecté
- return json_encode(['authenticated' => false]);
- }
- }
- /**
- * Authentifier l'utilisateur et maintenir la session PHP via un cookie
- */
- public static function authenticate(array $_input) {
- $ch = curl_init();
-
- $data = [
- 'email' => $_input["email"],
- 'password' => $_input["password"],
- ];
-
- curl_setopt($ch, CURLOPT_URL, API_AUTHENT);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Activer le suivi des redirections
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- // Désactiver la vérification SSL (à ne pas utiliser en production)
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
-
- // Gérer les cookies pour maintenir la session
- curl_setopt($ch, CURLOPT_COOKIEJAR, self::$cookieFile);
- curl_setopt($ch, CURLOPT_COOKIEFILE, self::$cookieFile);
-
- // Exécuter la requête cURL
- $response = curl_exec($ch);
-
- // Fermer la session cURL
- curl_close($ch);
- return $response;
- }
-
- /**
- * Faire une requête API authentifiée avec la session PHP active
- */
- public static function makeAuthenticatedRequest($endpoint, $method = 'GET', $data = [])
- {
- $ch = curl_init();
- $url = DOMAIN_API . $endpoint;
- curl_setopt($ch, CURLOPT_URL, $url . "/");
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- // Utiliser les cookies pour maintenir la session
- curl_setopt($ch, CURLOPT_COOKIEFILE, self::$cookieFile);
- // Configuration des méthodes GET/POST/PUT/DELETE
- if ($method === 'POST') {
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
- curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
- } elseif ($method === 'PUT') {
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
- curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
- curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
- } elseif ($method === 'DELETE') {
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
- }
- $response = curl_exec($ch);
- curl_close($ch);
- if ($response === false) {
- throw new Exception('Erreur lors de la requête API.');
- }
- return json_decode($response, true);
- }
- /**
- * Déconnexion (facultatif)
- */
- public static function logout()
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, API_LOGOUT);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_COOKIEFILE, self::$cookieFile);
- $response = curl_exec($ch);
- curl_close($ch);
- // Supprimer le fichier cookie après déconnexion
- unlink(self::$cookieFile);
- }
- }
|