6.1 KiB
6.1 KiB
🚗 Voitures API Client - Architecture MVC PHP
Application web développée en PHP 8 / HTML5 / CSS3 / JavaScript suivant le patron de conception MVC (Modèle - Vue - Contrôleur), spécialement adaptée pour consommer l'API REST de gestion de véhicules disponible sur VoituresApi-API.
🚀 Connexion à l'API locale
- URL de l'API locale :
http://localhost:8888 - Fichier de configuration :
config/config.php - Authentification : Jeton Bearer (
Authorization: Bearer <token>etX-API-KEY: <token>) stocké en session après connexion viaPOST /auth/login.
🔑 Comptes de démonstration préconfigurés dans l'API :
| Rôle | Identifiant | Mot de passe | Accès |
|---|---|---|---|
| Admin | admin |
adminpassword |
Accès total à tous les véhicules, entretiens et notes |
| Utilisateur | user |
userpassword |
Gestion de ses propres véhicules, entretiens et notes |
(Sur la page de connexion /login, deux boutons de raccourci permettent de vous connecter en 1 clic avec ces comptes).
📁 Architecture du projet MVC
voituresAPI-Front/
├── config/
│ └── config.php # Base URL (http://localhost:8888), timeouts & constantes
│
├── public/ # Dossier public exposé par le serveur web
│ ├── .htaccess # Redirection Apache vers index.php
│ ├── index.php # Front Controller (point d'entrée unique & déclaration des routes)
│ └── assets/
│ ├── css/
│ │ └── style.css # Feuille de style (plaques style FR, onglets, badges, responsive)
│ └── js/
│ └── main.js # Recherche dynamique sans rechargement, alertes flash, confirmations
│
├── src/ # Cœur du code MVC
│ ├── Core/
│ │ ├── Autoloader.php # Autoloader PSR-4 interne
│ │ └── Router.php # Routeur HTTP avec regex pour routes dynamiques (/cars/{id}...)
│ │
│ ├── Controllers/
│ │ ├── BaseController.php # Méthodes de rendu, redirections et messages flash
│ │ ├── AuthController.php # Connexion, inscription et déconnexion via l'API
│ │ └── CarController.php # CRUD véhicules, relevés km, entretiens et notes
│ │
│ ├── Models/
│ │ └── Car.php # Modèle Car correspondant exactement aux données de l'API
│ │
│ ├── Services/
│ │ └── ApiService.php # Client HTTP cURL (GET, POST, PUT, DELETE, Bearer token)
│ │
│ └── Views/
│ ├── layout/
│ │ ├── header.php # Navigation, statut connecté/déconnecté, recherche de plaque
│ │ └── footer.php # Pied de page
│ ├── cars/
│ │ ├── index.php # Grille des véhicules, plaques, propriétaires, filtres
│ │ ├── show.php # Fiche détaillée avec onglets (km, entretiens, notes)
│ │ └── form.php # Formulaire d'ajout / modification
│ ├── auth/
│ │ ├── login.php # Page de connexion avec raccourcis 1-clic admin/user
│ │ └── register.php# Page d'inscription
│ └── errors/
│ └── 404.php # Page d'erreur 404
│
├── .gitignore
└── README.md
🛣️ Routes de l'application Front
| Méthode | Route | Action correspondante | Accès |
|---|---|---|---|
GET |
/ |
Page d'accueil & présentation du projet + bouton création | Public |
GET |
/cars |
Parc automobile complet (GET /cars) ou mes véhicules (GET /cars/mes-voitures) selon rôle |
Authentifié (Admin / User) |
GET |
/cars?mine=1 |
Liste mes véhicules (GET /cars/mes-voitures) |
Authentifié |
GET |
/cars?immatriculation=... |
Recherche par plaque (GET /cars/immatriculation/{plaque}) |
Admin uniquement |
GET |
/cars/{id} |
Fiche détaillée avec km et entretiens (GET /cars/{id}) |
Public |
GET |
/cars/create |
Formulaire d'ajout d'un véhicule | Authentifié (Connexion requise) |
POST |
/cars/create |
Envoi à l'API (POST /cars) |
Authentifié |
GET |
/cars/{id}/edit |
Formulaire d'édition | Propriétaire / Admin |
POST |
/cars/{id}/edit |
Mise à jour dans l'API (PUT /cars/{id}) |
Propriétaire / Admin |
POST |
/cars/{id}/delete |
Suppression (DELETE /cars/{id}) |
Propriétaire / Admin |
POST |
/cars/{id}/kilometrage |
Ajout relevé km (POST /cars/{id}/kilometrage) |
Propriétaire / Admin |
POST |
/cars/{id}/maintenance |
Ajout entretien (POST /cars/{id}/maintenance) |
Propriétaire / Admin |
POST |
/cars/{id}/notes |
Ajout note de suivi (POST /cars/{id}/notes) |
Propriétaire / Admin |
GET |
/login / POST /login |
Connexion (POST /auth/login) avec support de redirection (?redirect=...) |
Public |
GET |
/register / POST /register |
Inscription (POST /auth/register) |
Public |
GET |
/logout |
Déconnexion (POST /auth/logout) |
Authentifié |
🔒 Sécurité & Privilèges (API REST v1.1.0)
Conformément à la version 1.1.0 de l'API :
- Privatisation de
GET /cars: L'accès à la flotte complète est restreint au rôleadmin(401si non authentifié,403siuser). Les utilisateurs accèdent automatiquement à leurs véhicules déclarés (GET /cars/mes-voitures). - Privatisation de la recherche d'immatriculation :
GET /cars/immatriculation/{plaque}est réservé aux administrateurs. - Page d'accueil dédiée : Route
/présentant le projet et disposant d'un appel à l'action pour créer une voiture (orientant les visiteurs non connectés vers la page d'authentification).
💻 Démarrage du serveur
Assurez-vous que l'API tourne sur http://localhost:8888.
Lancez le serveur PHP pour le front-end depuis la racine de voituresAPI-Front :
php -S localhost:8000 -t public
Rendez-vous sur votre navigateur à l'adresse : http://localhost:8000