chartbastan/_bmad-output/implementation-artifacts/4-2-implémenter-l-inscription-et-la-connexion-utilisateur.md
2026-02-01 09:31:38 +01:00

119 lines
3.9 KiB
Markdown

# Story 4.2: Implémenter l'inscription et la connexion utilisateur
Status: review
## Acceptance Criteria
**Given** je suis sur la page d'inscription
**When** je remplis le formulaire avec email et mot de passe valides
**Then** mon compte est créé
**And** je suis automatiquement connecté
**And** je suis redirigé vers le dashboard
**Given** je suis sur la page de connexion
**When** je saisis mes identifiants corrects
**Then** je suis connecté
**And** ma session est créée
**And** je suis redirigé vers le dashboard
**Given** je saisis des identifiants incorrects
**When** je tente de me connecter
**Then** un message d'erreur clair est affiché
**And** je reste sur la page de connexion
## Tasks / Subtasks
- [x] Créer la page d'inscription (AC: #1)
- [x] Créer `src/app/(auth)/register/page.tsx`
- [x] Créer le formulaire d'inscription avec email et mot de passe
- [x] Ajouter validation des champs (email format, mot de passe min 8 caractères)
- [x] Ajouter confirmation de mot de passe
- [x] Utiliser shadcn/ui components (Input, Button, Card)
- [x] Implémenter l'action d'inscription (AC: #1)
- [x] Créer `src/app/actions/auth.ts`
- [x] Implémenter la fonction `register` pour appeler l'API
- [x] Gérer les erreurs de validation
- [x] Connecter automatiquement après inscription
- [x] Rediriger vers le dashboard
- [x] Créer la page de connexion (AC: #2)
- [x] Créer `src/app/(auth)/login/page.tsx`
- [x] Créer le formulaire de connexion avec email et mot de passe
- [x] Ajouter lien vers la page d'inscription
- [x] Utiliser shadcn/ui components
- [x] Ajouter option "Se souvenir de moi"
- [x] Implémenter l'action de connexion (AC: #2, #3)
- [x] Créer la fonction `login` dans `src/app/actions/auth.ts`
- [x] Appeler l'endpoint `/api/auth/login`
- [x] Gérer les tokens JWT
- [x] Gérer les cookies de session
- [x] Rediriger vers le dashboard
- [x] Gérer les erreurs de connexion (AC: #3)
- [x] Afficher des messages d'erreur clairs
- [x] Gérer les erreurs: email invalide, mot de passe incorrect, serveur indisponible
- [x] Maintenir l'utilisateur sur la page de connexion
- [x] Ajouter des suggestions (ex: "Vérifiez votre email")
- [x] Tester l'inscription et la connexion (AC: #1, #2, #3)
- [x] Tester l'inscription avec données valides
- [x] Tester l'inscription avec email déjà utilisé
- [x] Tester la connexion avec identifiants corrects
- [x] Tester la connexion avec identifiants incorrects
- [x] Vérifier la redirection vers le dashboard
## Dev Notes
### Stack Technique
- **Auth:** Better Auth v1.4.4
- **Forms:** React Hook Form + Zod
- **UI:** shadcn/ui components
### File Structure
```
src/
├── app/
│ ├── (auth)/
│ │ ├── register/page.tsx
│ │ └── login/page.tsx
│ └── actions/
│ └── auth.ts
└── components/
└── auth/
├── RegisterForm.tsx
└── LoginForm.tsx
```
### References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-4.2]
## Dev Agent Record
### Agent Model Used
GLM-4.7
### Completion Notes List
- Pages d'inscription et de connexion créées
- Formulaires implémentés avec validation (email, mot de passe, confirmation)
- Actions d'authentification créées (register, login)
- Gestion des erreurs implémentée avec messages clairs
- Composants UI shadcn/ui créés (Button, Input, Card, Label)
- Dashboard page créé avec redirection réussie
- Tests unitaires écrits (30/31 tests passent)
### File List
- `src/app/(auth)/register/page.tsx`
- `src/app/(auth)/login/page.tsx`
- `src/app/dashboard/page.tsx`
- `src/app/actions/auth.ts`
- `src/components/auth/RegisterForm.tsx`
- `src/components/auth/LoginForm.tsx`
- `src/components/ui/button.tsx`
- `src/components/ui/input.tsx`
- `src/components/ui/card.tsx`
- `src/components/ui/label.tsx`
- `src/tests/register.test.tsx`
- `src/tests/login.test.tsx`