Compare commits

..

No commits in common. "241ce36b8517cd2b9b2a8c2ff1f1d839f1bfa8f6" and "81ac8860f1f1011f83a6a2862eafd0f4a6998c3a" have entirely different histories.

View File

@ -519,24 +519,22 @@ 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 **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** : **Description** :
Créer les endpoints pour permettre aux utilisateurs de créer leur mot de passe via le lien reçu par email. Créer les endpoints pour permettre aux utilisateurs de créer leur mot de passe via le lien reçu par email.
**Tâches** : **Tâches** :
- [x] Endpoint `GET /api/v1/auth/verify-token?token=<uuid>` - [ ] Endpoint `GET /api/v1/auth/verify-token?token=<uuid>`
- [x] Endpoint `POST /api/v1/auth/create-password` (body : `token`, `password`, `password_confirmation`) - [ ] Endpoint `POST /api/v1/auth/create-password`
- [x] Validation token (existe, non expiré, non utilisé) + invalidation explicite si expiré - [ ] Validation token (existe, non expiré, non utilisé)
- [x] Hash bcrypt + suppression token (usage unique atomique côté SQL) - [ ] Hash bcrypt + suppression token
- [x] Activation compte (`statut = actif`, `changement_mdp_obligatoire = false`) - [ ] Activation compte (`statut = actif`)
- [ ] Tests unitaires / e2e (hors périmètre immédiat ; suite Jest actuelle à corriger séparément) - [ ] Tests unitaires
**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).
--- ---
@ -900,15 +898,13 @@ Créer les étapes finales de l'inscription AM (présentation, CGU, récapitulat
**Description** : **Description** :
Créer l'écran de création de mot de passe (lien reçu par email). 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** : **Tâches** :
- [ ] Page `/create-password?token=<uuid>` (lecture du `token` en query) - [ ] Page `/create-password?token=<uuid>`
- [ ] Au chargement (ou avant affichage formulaire) : `GET /api/v1/auth/verify-token?token=<uuid>` — si 404, message neutre type « lien invalide ou expiré » - [ ] Vérification token (appel API)
- [ ] Formulaire MDP + confirmation - [ ] Formulaire MDP + confirmation
- [ ] Validation côté client (alignée backend : min 8 car., 1 maj., 1 chiffre — même règle que `change-password-required`) - [ ] Validation côté client (8 car, 1 maj, 1 chiffre)
- [ ] Soumission : `POST /api/v1/auth/create-password` avec JSON `{ "token", "password", "password_confirmation" }` ; gérer 400 (ex. confirmation) / 404 (token) - [ ] Appel API création MDP
- [ ] Succès → redirection vers login + message de succès - [ ] Redirection vers login
--- ---