Feature #1144
openFeature #1133: Implémenter une page de profil utilisateur avec gestion des crédits et des tiers d'abonnement
Fullstack — Changement de mot de passe sécurisé (vérif ancien + email de confirmation)
0%
issue:1133 — spec in epic + ticket description
Description
## Objectif
Flux complet et sécurisé de changement de mot de passe : endpoint backend (vérification de l'ancien mot de passe + déclenchement de l'email de confirmation) et formulaire frontend dans la page profil.
## Dépendances
Dépend du backend modèle/permissions (#1141) et des notifications email (#1142, pour l'email de confirmation).
## Portée — Backend (`api/`)
- Endpoint authentifié de changement de mot de passe : exige l'ancien mot de passe, le vérifie, applique les règles de robustesse, hashe et persiste le nouveau.
- Émet l'événement « mot de passe changé » consommé par les notifications (#1142) pour l'email de confirmation.
- Rejet 400/401 si l'ancien mot de passe est incorrect; rate-limiting raisonnable.
## Portée — Frontend (`src/`)
- Formulaire sécurisé dans la page « Mon compte » : champs ancien mot de passe, nouveau, confirmation; validation côté client + affichage des erreurs serveur.
- États succès/erreur clairs; clés i18n dans `en.ts` ET `fr.ts`.
## Acceptance criteria
- [ ] Le changement échoue si l'ancien mot de passe est incorrect (erreur explicite).
- [ ] Un mot de passe valide est hashé et persisté; les règles de robustesse sont appliquées.
- [ ] Un email de confirmation est envoyé après un changement réussi (via #1142).
- [ ] Le formulaire valide la confirmation et affiche les erreurs serveur.
- [ ] Clés i18n cohérentes `en.ts`/`fr.ts`.
- [ ] Backend : pytest verts, `ruff check .`, `mypy src` propres. Frontend : `vitest`, `tsc`, `eslint`, `build` verts.
Files