Aller au contenu

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 :

  1. Cohérence du cycle de vie : login, logout, me et status appartiennent 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.

  2. Séparation stricte des rôles : /api/users n'existe pas côté public. Le contrôleur UserController (public) utilise /api/auth, tandis que la gestion administrative des comptes passe par /api/admin/users — voir admin.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é

Chaos Métier

  • A9 — Log poisoning (niveau 3+) — Les champs texte libres sont loggés sans échappement
  • Injection SQL (niveau 2+) — postalCode et country peuvent déclencher une DataIntegrityViolationException

Les détails complets sont dans la page auth.md ainsi que dans les pages de chaos respectives.


Liens associés