Files
geo/api/docs/api-analysis.md
pierre 1018b86537 feat: Gestion des secteurs et migration v3.0.4+304
- 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>
2025-08-07 11:01:45 +02:00

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 Prokov
  • app.resalice.com - Application Resalice

En fonction de l'identifiant, l'API :

  1. Charge les routes spécifiques à l'application
  2. Applique la configuration correspondante (base de données, préfixe API)
  3. Active uniquement les modules nécessaires

Flux de traitement d'une requête

  1. La requête arrive sur index.php
  2. Le système vérifie l'en-tête X-App-Identifier et charge la configuration appropriée
  3. Le routeur analyse l'URI en tenant compte du préfixe API spécifique à l'application
  4. Pour les routes privées, le système vérifie l'authentification via Session
  5. Le contrôleur approprié est instancié et sa méthode appelée
  6. 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é :

  1. Authentification : Session PHP sécurisée, support des tokens Bearer
  2. Protection des données :
    • Chiffrement des données sensibles (AES-256-CBC)
    • Hachage sécurisé des mots de passe
  3. 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)
  4. 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 :

  1. Ajouter une entrée dans la configuration AppConfig
  2. Créer un fichier de routes spécifique dans le dossier routes/
  3. Implémenter les contrôleurs spécifiques
  4. É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.