mirror of
https://github.com/tips-of-mine/gestion-certificats2.git
synced 2025-06-28 15:08:42 +02:00
Modernisation du projet Gestion Certificat
This commit is contained in:
74
app/public/api.php
Normal file
74
app/public/api.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
// Point d'entrée pour les API V1
|
||||
session_start();
|
||||
|
||||
// Inclusion des fichiers fondamentaux
|
||||
require_once __DIR__ . '/../src/Core/Autoloader.php';
|
||||
require_once __DIR__ . '/../src/Core/Database.php';
|
||||
require_once __DIR__ . '/../src/config/app.php';
|
||||
|
||||
// Enregistrement de l'autoloader
|
||||
\App\Core\Autoloader::register();
|
||||
|
||||
use App\Core\Database;
|
||||
use App\Api\V1\Router;
|
||||
use App\Services\LogService;
|
||||
|
||||
// Initialisation de la connexion à la base de données
|
||||
try {
|
||||
Database::connect(DB_HOST, DB_NAME, DB_USER, DB_PASSWORD);
|
||||
} catch (PDOException $e) {
|
||||
error_log("API: Database connection error: " . $e->getMessage());
|
||||
http_response_code(500);
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'Database connection failed']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Headers CORS pour les requêtes cross-origin
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
|
||||
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
|
||||
|
||||
// Gérer les requêtes OPTIONS (preflight)
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
||||
http_response_code(200);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Log des requêtes API
|
||||
$logService = new LogService(APP_LOG_PATH);
|
||||
$logService->log('info', 'API Request: ' . $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'], null, $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
// Configuration du routeur API
|
||||
$router = new Router();
|
||||
|
||||
// Routes d'authentification
|
||||
$router->addRoute('POST', '/auth/login', 'AuthController', 'login');
|
||||
$router->addRoute('POST', '/auth/logout', 'AuthController', 'logout', true);
|
||||
$router->addRoute('GET', '/auth/me', 'AuthController', 'me', true);
|
||||
|
||||
// Routes des certificats
|
||||
$router->addRoute('GET', '/certificates', 'CertificatesController', 'index', true);
|
||||
$router->addRoute('POST', '/certificates', 'CertificatesController', 'create', true);
|
||||
$router->addRoute('POST', '/certificates/{id}/revoke', 'CertificatesController', 'revoke', true);
|
||||
$router->addRoute('GET', '/certificates/download', 'CertificatesController', 'download', true);
|
||||
$router->addRoute('GET', '/certificates/stats', 'CertificatesController', 'stats', true);
|
||||
|
||||
// Routes des périmètres
|
||||
$router->addRoute('GET', '/perimeters', 'PerimetersController', 'index', true);
|
||||
$router->addRoute('POST', '/perimeters', 'PerimetersController', 'create', true);
|
||||
|
||||
// Routes des utilisateurs
|
||||
$router->addRoute('GET', '/users', 'UsersController', 'index', true);
|
||||
$router->addRoute('POST', '/users', 'UsersController', 'create', true);
|
||||
$router->addRoute('DELETE', '/users/{id}', 'UsersController', 'delete', true);
|
||||
$router->addRoute('PUT', '/users/{id}/role', 'UsersController', 'updateRole', true);
|
||||
$router->addRoute('PUT', '/users/{id}/password', 'UsersController', 'updatePassword', true);
|
||||
|
||||
// Route du dashboard
|
||||
$router->addRoute('GET', '/dashboard/stats', 'DashboardController', 'stats', true);
|
||||
|
||||
// Dispatche la requête
|
||||
$router->dispatch();
|
Reference in New Issue
Block a user