119 lines
3.9 KiB
Markdown
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`
|