docs(tickets): #24 livré backend, #43 alignement API verify-token/create-password

Made-with: Cursor
This commit is contained in:
MARTIN Julien 2026-04-16 22:56:42 +02:00
parent 8105c01501
commit b0594c32e7

View File

@ -519,22 +519,24 @@ Finalisation de l'inscription parent (présentation, CGU, récapitulatif - inté
---
### Ticket #24 : [Backend] API Création mot de passe
### Ticket #24 : [Backend] API Création mot de passe
**Estimation** : 3h
**Labels** : `backend`, `p2`, `auth`, `security`
**Labels** : `backend`, `p2`, `auth`, `security`
**Statut** : ✅ TERMINÉ (livré sur `develop` + `master`, févr. 2026 — aligné ticket Gitea **#123** durcissement token)
**Description** :
Créer les endpoints pour permettre aux utilisateurs de créer leur mot de passe via le lien reçu par email.
**Tâches** :
- [ ] Endpoint `GET /api/v1/auth/verify-token?token=<uuid>`
- [ ] Endpoint `POST /api/v1/auth/create-password`
- [ ] Validation token (existe, non expiré, non utilisé)
- [ ] Hash bcrypt + suppression token
- [ ] Activation compte (`statut = actif`)
- [ ] Tests unitaires
- [x] Endpoint `GET /api/v1/auth/verify-token?token=<uuid>`
- [x] Endpoint `POST /api/v1/auth/create-password` (body : `token`, `password`, `password_confirmation`)
- [x] Validation token (existe, non expiré, non utilisé) + invalidation explicite si expiré
- [x] Hash bcrypt + suppression token (usage unique atomique côté SQL)
- [x] Activation compte (`statut = actif`, `changement_mdp_obligatoire = false`)
- [ ] Tests unitaires / e2e (hors périmètre immédiat ; suite Jest actuelle à corriger séparément)
**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-7--création-du-mot-de-passe)
**Référence** : [20_WORKFLOW-CREATION-COMPTE.md](./20_WORKFLOW-CREATION-COMPTE.md#étape-7--création-du-mot-de-passe)
**Suite** : alignement **frontend** → ticket **#43** (appels explicites ci-dessous).
---
@ -898,13 +900,15 @@ Créer les étapes finales de l'inscription AM (présentation, CGU, récapitulat
**Description** :
Créer l'écran de création de mot de passe (lien reçu par email).
**Dépendance backend** : ticket **#24** / **#123** — routes disponibles sous préfixe global `api/v1` (voir `backend/src/main.ts`).
**Tâches** :
- [ ] Page `/create-password?token=<uuid>`
- [ ] Vérification token (appel API)
- [ ] Page `/create-password?token=<uuid>` (lecture du `token` en query)
- [ ] Au chargement (ou avant affichage formulaire) : `GET /api/v1/auth/verify-token?token=<uuid>` — si 404, message neutre type « lien invalide ou expiré »
- [ ] Formulaire MDP + confirmation
- [ ] Validation côté client (8 car, 1 maj, 1 chiffre)
- [ ] Appel API création MDP
- [ ] Redirection vers login
- [ ] Validation côté client (alignée backend : min 8 car., 1 maj., 1 chiffre — même règle que `change-password-required`)
- [ ] Soumission : `POST /api/v1/auth/create-password` avec JSON `{ "token", "password", "password_confirmation" }` ; gérer 400 (ex. confirmation) / 404 (token)
- [ ] Succès → redirection vers login + message de succès
---