# 🚗 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](https://code.erwann-philippe.xyz/wktr/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 ` et `X-API-KEY: `) stocké en session après connexion via `POST /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 ```text 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` | `/` ou `/cars` | Liste tous les véhicules (`GET /cars`) | Public | | `GET` | `/cars?mine=1` | Liste mes véhicules (`GET /cars/mes-voitures`) | Authentifié | | `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é | | `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`) | Public | | `GET` | `/register` / `POST /register` | Inscription (`POST /auth/register`) | Public | | `GET` | `/logout` | Déconnexion (`POST /auth/logout`) | Authentifié | --- ## 💻 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` : ```powershell php -S localhost:8000 -t public ``` Rendez-vous sur votre navigateur à l'adresse : **[http://localhost:8000](http://localhost:8000)**