4.4 KiB
Story 4.1: Configurer Better Auth pour authentification
Status: review
Acceptance Criteria
Given Better Auth est installé When je configure Better Auth dans Next.js Then la configuration est créée avec support JWT stateless And les routes d'authentification sont configurées (/api/auth/login, /api/auth/register) And les cookies sécurisés sont configurés (HttpOnly, Secure, SameSite) And la connexion à la base de données est établie
Given Better Auth est configuré When je teste l'inscription Then un nouvel utilisateur peut s'inscrire avec email et mot de passe And le mot de passe est hashé avec bcrypt And l'utilisateur est créé dans la base de données
Tasks / Subtasks
-
Installer Better Auth (AC: #1)
- Installer
better-auth - Créer la configuration Better Auth dans
src/lib/auth.ts - Configurer JWT stateless
- Configurer les cookies sécurisés
- Vérifier l'installation
- Installer
-
Créer les routes d'authentification (AC: #1)
- Créer
/api/auth/register - Créer
/api/auth/login - Créer
/api/auth/logout - Créer
/api/auth/me(profil utilisateur) - Configurer les handlers Better Auth
- Créer
-
Créer le schéma utilisateur (AC: #1, #2)
- Créer la table
usersdans Drizzle - Ajouter colonnes: email, password_hash, is_premium
- Générer et appliquer les migrations
- Configurer Better Auth avec le schéma utilisateur
- Créer la table
-
Tester l'inscription (AC: #2)
- Créer un endpoint de test POST
/api/auth/register - Envoyer des données utilisateur valides
- Vérifier que l'utilisateur est créé dans la base de données
- Vérifier que le mot de passe est hashé
- Tester l'inscription avec email déjà utilisé
- Créer un endpoint de test POST
-
Tester la connexion (AC: #1)
- Créer un endpoint de test POST
/api/auth/login - Envoyer email et mot de passe valides
- Vérifier que le JWT est généré
- Vérifier que les cookies sécurisés sont définis
- Tester avec des identifiants invalides
- Créer un endpoint de test POST
Dev Notes
Stack Technique
- Auth: Better Auth v1.4.4
- JWT: Stateless
- Cookies: HttpOnly, Secure, SameSite
File Structure
src/
├── lib/
│ └── auth.ts
├── db/
│ └── schema.ts (users table)
└── app/
└── api/
└── auth/
├── register/route.ts
├── login/route.ts
└── logout/route.ts
References
- [Source: _bmad-output/planning-artifacts/epics.md#Story-4.1]
Dev Agent Record
Agent Model Used
GLM-4.7
Completion Notes List
- Better Auth v1.4.14 installé et configuré avec succès
- Configuration JWT stateless implémentée avec cookies sécurisés (HttpOnly, Secure, SameSite)
- Schéma utilisateur mis à jour avec colonne password_hash dans Drizzle
- Migration générée et appliquée (0002_parched_zarda.sql)
- Quatre routes API créées: /api/auth/register, /api/auth/login, /api/auth/logout, /api/auth/me
- Tests d'intégration complets créés avec Vitest (13 tests, tous passants)
- Hashage des mots de passe avec bcryptjs implémenté
- Validation des données d'entrée et gestion des erreurs robuste
- Format de réponse API standardisé ({data, meta} ou {error, meta})
Implementation Plan
- Installation des dépendances: better-auth, bcryptjs, @types/bcryptjs
- Configuration de Better Auth dans src/lib/auth.ts avec adaptateur Drizzle
- Mise à jour du schéma utilisateur pour ajouter password_hash
- Génération et application des migrations Drizzle
- Création des routes d'authentification avec validation
- Tests d'intégration complets couvrant tous les scénarios
File List
src/lib/auth.ts- Configuration Better Authsrc/app/api/auth/register/route.ts- Route d'inscriptionsrc/app/api/auth/login/route.ts- Route de connexionsrc/app/api/auth/logout/route.ts- Route de déconnexionsrc/app/api/auth/me/route.ts- Route profil utilisateursrc/db/schema.ts- Schéma mis à jour avec password_hashsrc/tests/auth.test.ts- Tests d'intégration (13 tests)src/tests/setup.ts- Configuration des testsvitest.config.ts- Configuration Vitestpackage.json- Scripts de test ajoutésdrizzle/migrations/0002_parched_zarda.sql- Migration ajoutée
Change Log
- 2026-01-17: Implémentation complète de l'authentification avec Better Auth, bcryptjs, et tests