- Ajout système complet de gestion des secteurs avec contours géographiques - Import des contours départementaux depuis GeoJSON - API REST pour la gestion des secteurs (/api/sectors) - Service de géolocalisation pour déterminer les secteurs - Migration base de données avec tables x_departements_contours et sectors_adresses - Interface Flutter pour visualisation et gestion des secteurs - Ajout thème sombre dans l'application - Corrections diverses et optimisations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
6.2 KiB
Executable File
Synthèse du Projet API PHP 8.3
Introduction
Ce document présente une synthèse du projet API développé en PHP 8.3 sur Debian 12. Cette API modulaire sert de backend à plusieurs applications frontend, avec une architecture qui permet de traiter différemment les requêtes en fonction de l'application cliente.
Architecture globale
Caractéristiques principales
- Langage : PHP 8.3
- Système d'exploitation : Debian 12
- Architecture : REST API modulaire
- Multi-applications : Support de différentes applications frontend via un système de routage conditionnel
- Sécurité : Gestion des sessions, protection CORS, chiffrement des données sensibles
Structure du projet
/api/
├── bootstrap.php # Initialisation de base et autoload
├── composer.json # Dépendances et configuration de l'autoload
├── index.php # Point d'entrée principal
├── routes/ # Définition des routes par application
│ ├── default.php
│ ├── prokov.php
│ └── resalice.php
├── src/
│ ├── Config/ # Configuration de l'application
│ ├── Controllers/ # Contrôleurs pour chaque ressource
│ ├── Core/ # Composants fondamentaux (routeur, DB, session)
│ └── Services/ # Services partagés
├── logs/ # Journaux d'activité
└── vendor/ # Dépendances externes
Fonctionnement
Système d'identification des applications
L'API identifie l'application cliente grâce à l'en-tête HTTP X-App-Identifier. Chaque application a son propre identifiant :
prokov.unikoffice.com- Application Prokovapp.resalice.com- Application Resalice
En fonction de l'identifiant, l'API :
- Charge les routes spécifiques à l'application
- Applique la configuration correspondante (base de données, préfixe API)
- Active uniquement les modules nécessaires
Flux de traitement d'une requête
- La requête arrive sur
index.php - Le système vérifie l'en-tête
X-App-Identifieret charge la configuration appropriée - Le routeur analyse l'URI en tenant compte du préfixe API spécifique à l'application
- Pour les routes privées, le système vérifie l'authentification via Session
- Le contrôleur approprié est instancié et sa méthode appelée
- Une réponse JSON est générée et renvoyée au client
Composants principaux
Classe AppConfig
Cette classe singleton gère la configuration de l'API, avec des paramètres spécifiques à chaque application :
- Connexion à la base de données
- Préfixe des routes API
- Modules activés
- Clés de chiffrement
Classe Router
Le routeur gère :
- L'enregistrement des routes avec leur méthode HTTP (GET, POST, PUT, DELETE)
- La gestion des paramètres dynamiques dans les URLs
- La distinction entre routes publiques et privées
- Le dispatch vers les contrôleurs
Classe Database
Gère la connexion à la base de données en utilisant PDO avec des paramètres optimisés pour la sécurité :
- Paramètres préparés
- Mode d'erreur strict
- Connexion unique (pattern Singleton)
Classe Session
Gère l'authentification des utilisateurs et les sessions :
- Configuration sécurisée des cookies
- Support de l'authentification par Bearer token
- Vérification de l'activité et expiration
- Protection contre la fixation de session
Classe ApiService
Fournit des fonctionnalités partagées :
- Envoi d'emails via PHPMailer
- Chiffrement et déchiffrement des données sensibles
- Support de deux types de chiffrement (recherchable et non-recherchable)
Classe LogService
Gère la journalisation des événements avec des métadonnées structurées :
- Logs au format JSON pour faciliter l'analyse
- Rotation hebdomadaire des fichiers de logs
- Capture d'informations sur le client et l'environnement
Sécurité
Le projet implémente plusieurs niveaux de sécurité :
- Authentification : Session PHP sécurisée, support des tokens Bearer
- Protection des données :
- Chiffrement des données sensibles (AES-256-CBC)
- Hachage sécurisé des mots de passe
- Sécurité HTTP :
- Validation stricte du CORS
- En-têtes de sécurité (X-Content-Type-Options, X-Frame-Options, X-XSS-Protection)
- Cookies sécurisés (httpOnly, secure, SameSite=Strict)
- Sécurité des requêtes :
- Validation des entrées
- Protection contre les injections SQL avec PDO
- Sanitisation des données
Applications supportées
Prokov (prokov.unikoffice.com)
Application avec le préfixe d'API api/pkv, supportant les modules :
- users
- logs
- admin
Resalice (app.resalice.com)
Application avec le préfixe d'API api/res, supportant les modules :
- users
- logs
- site3
Fonctionnalités spécifiques :
- Gestion des profils utilisateurs avec des champs supplémentaires
- Gestion des professionnels
Points d'extension
Le système est conçu pour faciliter l'ajout de nouvelles applications et fonctionnalités :
- Ajouter une entrée dans la configuration AppConfig
- Créer un fichier de routes spécifique dans le dossier routes/
- Implémenter les contrôleurs spécifiques
- Éventuellement ajouter des services spécifiques à l'application
Dépendances externes
- phpmailer/phpmailer : Utilisé pour l'envoi d'emails
- ext-pdo : Pour la connexion à la base de données
- ext-openssl : Pour le chiffrement des données
- ext-json : Pour la manipulation JSON
Conclusion
Cette API RESTful en PHP 8.3 présente une architecture modulaire bien structurée permettant de servir différentes applications frontend avec une base de code commune. Le système d'identification des applications et de routage conditionnel offre une grande flexibilité tout en maintenant une séparation claire des fonctionnalités.
La sécurité a été prise en compte à plusieurs niveaux, notamment par le chiffrement des données sensibles et une gestion sécurisée des sessions. Le système de logs permet également un suivi efficace de l'activité et facilite le débogage.
L'architecture modulaire facilite l'extension à de nouvelles applications et l'ajout de nouvelles fonctionnalités, ce qui en fait une solution évolutive à long terme.