[Full-stack] Mot de passe oublié — flux complet (demande, e-mail, réinitialisation) #127

Closed
opened 2026-04-23 14:43:28 +00:00 by jmartin · 1 comment
Owner

Contexte

Parcours distinct de la création de mot de passe post-inscription (#24 / #43 : verify-token + create-password). Sur le login, le lien « Mot de passe oublié ? » pointe aujourd’hui vers /create-password (login_screen.dart), ce qui ne convient pas à un compte déjà existant.

Backend

  • Analyse token : réutiliser password_reset_token / password_reset_expires (+ config password_reset_token_expiry_days) ou flux/champs séparés si collision avec l’inscription — documenter le choix
  • POST ex. /api/v1/auth/forgot-password : { "email" } — réponse neutre (anti-énumération)
  • Génération, persistance, expiration, invalidation après usage
  • E-mail MailService + template Handlebars « réinitialisation »
  • POST ex. /api/v1/auth/reset-password : token + password + confirmation (règles = create-password / changement MDP)
  • Rate limiting ; tests ; OpenAPI

Frontend

  • Saisie e-mail + appel forgot-password + message générique
  • Route dédiée ex. /reset-password?token= (≠ /create-password)
  • Corriger le lien sur l’écran de login
  • Erreurs token expiré/invalide (libellés neutres)

Transverse

  • CDC / évolutions si besoin ; E2E ou scénario manuel

Spec projet : docs/23_LISTE-TICKETS.md (section « Mot de passe oublié »).
Estimation : ~12h · Labels : full-stack, p2, p3, auth, security, cdc

## Contexte Parcours **distinct** de la création de mot de passe post-inscription (#24 / #43 : `verify-token` + `create-password`). Sur le login, le lien « Mot de passe oublié ? » pointe aujourd’hui vers `/create-password` (`login_screen.dart`), ce qui ne convient pas à un compte déjà existant. ## Backend - [ ] Analyse token : réutiliser `password_reset_token` / `password_reset_expires` (+ config `password_reset_token_expiry_days`) **ou** flux/champs séparés si collision avec l’inscription — documenter le choix - [ ] `POST` ex. `/api/v1/auth/forgot-password` : `{ "email" }` — réponse **neutre** (anti-énumération) - [ ] Génération, persistance, expiration, invalidation après usage - [ ] E-mail MailService + template Handlebars « réinitialisation » - [ ] `POST` ex. `/api/v1/auth/reset-password` : token + password + confirmation (règles = create-password / changement MDP) - [ ] Rate limiting ; tests ; OpenAPI ## Frontend - [ ] Saisie e-mail + appel forgot-password + message générique - [ ] Route dédiée ex. `/reset-password?token=` (≠ `/create-password`) - [ ] Corriger le lien sur l’écran de login - [ ] Erreurs token expiré/invalide (libellés neutres) ## Transverse - [ ] CDC / évolutions si besoin ; E2E ou scénario manuel **Spec projet** : `docs/23_LISTE-TICKETS.md` (section « Mot de passe oublié »). **Estimation** : ~12h · **Labels** : full-stack, p2, p3, auth, security, cdc
Author
Owner

Livré et fusionné

  • develop : merge de feature/127-mot-de-passe-oublie-flux-complet (e6a0871).
  • master : squash merge avec commit feat(#127): mot de passe oublié — flux complet (18f3a7f).

Contenu : API forgot-password / reset-password, colonnes BDD + index, écrans Flutter, template e-mail, tests, alignement visuel des mails.

Clôture ticket #127.

**Livré et fusionné** - `develop` : merge de `feature/127-mot-de-passe-oublie-flux-complet` (e6a0871). - `master` : squash merge avec commit `feat(#127): mot de passe oublié — flux complet` (18f3a7f). **Contenu** : API `forgot-password` / `reset-password`, colonnes BDD + index, écrans Flutter, template e-mail, tests, alignement visuel des mails. Clôture ticket #127.
jmartin added the
v0.1.0
label 2026-05-04 20:33:24 +00:00
jmartin added this to the 0.1.0 milestone 2026-05-04 20:34:59 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jmartin/petitspas#127
No description provided.