# 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`