API — Profil utilisateur¶
Organisation de la référence
Dans PerfShop, les endpoints de gestion du profil utilisateur sont exposés sur le préfixe /api/auth (pas /api/users), par le contrôleur UserController. Ils sont documentés en détail dans la page Authentification pour préserver la cohérence avec leur voisin direct AuthController.
Cette page sert de point d'entrée rapide pour retrouver les endpoints profil.
Endpoints liés au profil¶
| Méthode | Endpoint | Page de référence |
|---|---|---|
GET |
/api/auth/status |
auth.md § GET /api/auth/status |
GET |
/api/auth/me |
auth.md § GET /api/auth/me |
PUT |
/api/auth/me |
auth.md § PUT /api/auth/me |
Pourquoi pas /api/users ?¶
Historiquement, PerfShop a hébergé la gestion du profil sous /api/auth pour deux raisons :
-
Cohérence du cycle de vie :
login,logout,meetstatusappartiennent au même domaine conceptuel (« qui suis-je et suis-je connecté »). Les regrouper sous un même préfixe simplifie le routage côté frontend. -
Séparation stricte des rôles :
/api/usersn'existe pas côté public. Le contrôleurUserController(public) utilise/api/auth, tandis que la gestion administrative des comptes passe par/api/admin/users— voiradmin.md.
Ce choix est assumé : il évite les collisions de routing et reflète les rôles métier (utilisateur final sous /auth, administration sous /admin).
Champs du profil¶
Le profil utilisateur contient les informations suivantes :
| Champ | Type | Description | Validation |
|---|---|---|---|
id |
Long | Identifiant interne | Lecture seule |
email |
string | Email de connexion | Format email, unique |
civility |
string | Civilité (M, Mme, Mx) |
Whitelist |
firstName |
string | Prénom | 2–100 caractères |
lastName |
string | Nom | 2–100 caractères |
birthDate |
ISO date | Date de naissance | Age ≥ 16 et ≤ 120 |
phone |
string | Téléphone | Format national selon country |
street |
string | Rue + numéro | 5–200 caractères |
postalCode |
string | Code postal | Format national |
city |
string | Ville | 2–100 caractères |
region |
string | Région (optionnel) | 2–100 caractères |
country |
string | Code ISO 3166-1 alpha-2 | Whitelist dans ValidationService.getCountries() |
Les règles de validation par pays sont gérées par ValidationService. Voir la section validation du profil dans auth.md pour le détail des formats acceptés.
Chaos concernant le profil¶
Trois familles de chaos touchent le profil utilisateur :
Chaos Sécurité¶
- S3 — Hash BCrypt exposé (niveau 1+) —
GET /api/auth/meexpose le hash du mot de passe - S9 — Mass Assignment (niveau 3+) —
PUT /api/auth/meaccepteemailetpasswordsans whitelist
Chaos Métier¶
- A9 — Log poisoning (niveau 3+) — Les champs texte libres sont loggés sans échappement
- Injection SQL (niveau 2+) —
postalCodeetcountrypeuvent déclencher uneDataIntegrityViolationException
Les détails complets sont dans la page auth.md ainsi que dans les pages de chaos respectives.
Liens associés¶
- auth.md — documentation complète des endpoints
/api/auth/* - admin.md — gestion administrative des comptes utilisateur
- Chaos Sécurité — S3, S9
- Chaos Métier — A9