79 lines
2.7 KiB
PHP
79 lines
2.7 KiB
PHP
<?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;
|
|
use App\Controllers\CarController;
|
|
use App\Controllers\AuthController;
|
|
|
|
$router = new Router();
|
|
|
|
// --- Page d'accueil (Présentation du projet) ---
|
|
$router->get('/', [HomeController::class, 'index']);
|
|
|
|
// --- 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();
|