Module 06
⭐⭐⭐ Difficile
~4h
🔐 Système d'Auth JWT Complet
Implémenter un système d'authentification production-ready : register, login, refresh tokens, logout, RBAC, reset password, et protection de routes.
🔧 Architecture Auth
// Flux complet
POST /auth/register → Créer compte + email confirmation
POST /auth/login → { accessToken (15m), refreshToken (7d) }
POST /auth/refresh → Rotation tokens + nouveau couple
POST /auth/logout → Invalider refresh token en DB
POST /auth/forgot → Envoyer email reset password
POST /auth/reset/:token → Changer le mot de passe
GET /auth/me → Profil utilisateur connecté (protégé JWT)
🛡️ Guards à créer
// 1. JwtAuthGuard global (avec @Public() bypass)
// 2. RolesGuard (admin > moderator > user)
// 3. ResourceOwnerGuard (vérifie propriété d'une ressource)
// 4. RefreshTokenGuard (stratégie JWT avec secret différent)
// Décorateurs
@Public() // Route accessible sans token
@Roles('admin') // Restreindre par rôle
@CurrentUser() // Extraire user de req.user
@CurrentUser('id') // Extraire champ spécifique
✅ Fonctionnalités
- Hachage bcrypt (cost factor 12) pour les mots de passe
- Access token (15min) + Refresh token (7j) avec rotation
- Détection de réutilisation de refresh token
- Reset password par email avec token temporaire (1h)
- RBAC : admin peut tout, user ne peut modifier que ses ressources
- Rate limiting sur /auth/login (5 tentatives/15min)