VoituresApi-API-Front/public/index.php

80 lines
2.7 KiB
PHP
Raw Normal View History

2026-09-18 09:11:18 +00:00
<?php
/**
* Front Controller - Point d'entrée unique de l'application
*/
// Configuration d'un répertoire de sessions accessible en écriture
$sessionSavePath = dirname(__DIR__) . '/sessions';
if (!is_dir($sessionSavePath)) {
@mkdir($sessionSavePath, 0777, true);
}
if (is_dir($sessionSavePath) && is_writable($sessionSavePath)) {
session_save_path($sessionSavePath);
} else {
session_save_path(sys_get_temp_dir());
}
// Paramètres et démarrage de la session
if (session_status() === PHP_SESSION_NONE && !headers_sent()) {
ini_set('session.cookie_httponly', '1');
@session_start();
}
// Chargement de la configuration
require_once __DIR__ . '/../config/config.php';
// Chargement et enregistrement de l'autoloader PSR-4
require_once __DIR__ . '/../src/Core/Autoloader.php';
\App\Core\Autoloader::register();
use App\Core\Router;
use App\Controllers\HomeController;
2026-09-18 09:11:18 +00:00
use App\Controllers\CarController;
use App\Controllers\AuthController;
$router = new Router();
// --- Page d'accueil (Présentation du projet) ---
$router->get('/', [HomeController::class, 'index']);
2026-09-18 09:11:18 +00:00
// --- Routes d'authentification ---
$router->get('/login', [AuthController::class, 'login']);
$router->post('/login', [AuthController::class, 'authenticate']);
$router->get('/register', [AuthController::class, 'register']);
$router->post('/register', [AuthController::class, 'storeUser']);
$router->get('/logout', [AuthController::class, 'logout']);
// --- Routes des véhicules ---
$router->get('/cars', [CarController::class, 'index']);
// Création d'un véhicule
$router->get('/cars/create', [CarController::class, 'create']);
$router->post('/cars/create', [CarController::class, 'store']);
// Consultation d'un véhicule
$router->get('/cars/{id}', [CarController::class, 'show']);
// Modification d'un véhicule
$router->get('/cars/{id}/edit', [CarController::class, 'edit']);
$router->post('/cars/{id}/edit', [CarController::class, 'update']);
// Suppression d'un véhicule
$router->post('/cars/{id}/delete', [CarController::class, 'delete']);
// Relevés kilométriques
$router->post('/cars/{id}/kilometrage', [CarController::class, 'addKilometrage']);
$router->post('/cars/{id}/kilometrage/{kmId}/delete', [CarController::class, 'deleteKilometrage']);
// Entretiens & Maintenance
$router->post('/cars/{id}/maintenance', [CarController::class, 'addMaintenance']);
$router->post('/cars/{id}/maintenance/{maintId}/delete', [CarController::class, 'deleteMaintenance']);
// Notes confidentielles
$router->post('/cars/{id}/notes', [CarController::class, 'addNote']);
$router->post('/cars/{id}/notes/{noteId}/delete', [CarController::class, 'deleteNote']);
// Résolution de la requête
$router->dispatch();