← Retour à la marketplaceVoir les projets →
🔐
Auth + RBAC
⭐ RecommandéAuthentification complète avec contrôle d'accès par rôle (RBAC).
AuthMoyen~5 joursv1.1.0
Système d'authentification JWT avec gestion des rôles (ADMIN, MANAGER, USER), permissions granulaires par ressource, sessions sécurisées, réinitialisation de mot de passe et middleware de protection des routes.
authjwtrolespermissionssecurity
📋 Schéma Prisma
// === Module Auth + RBAC ===
enum UserRole {
SUPER_ADMIN
ADMIN
MANAGER
USER
GUEST
}
model User {
id String @id @default(cuid())
email String @unique
passwordHash String
name String
role UserRole @default(USER)
emailVerified Boolean @default(false)
lastLoginAt DateTime?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sessions UserSession[]
auditLogs UserAuditLog[]
@@map("users")
}
model UserSession {
id String @id @default(cuid())
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
token String @unique
expiresAt DateTime
ipAddress String?
userAgent String?
createdAt DateTime @default(now())
@@map("user_sessions")
}
model Permission {
id String @id @default(cuid())
resource String // ex: "invoice", "customer"
action String // ex: "create", "read", "update", "delete"
roleAllowed UserRole
createdAt DateTime @default(now())
@@unique([resource, action, roleAllowed])
@@map("permissions")
}🔌 Endpoints API
## API Auth + RBAC ### Authentification POST /api/auth/register # Créer un compte POST /api/auth/login # Connexion (retourne JWT) POST /api/auth/logout # Invalider la session POST /api/auth/refresh # Renouveler le token POST /api/auth/forgot-password # Demander reset mot de passe POST /api/auth/reset-password # Appliquer le nouveau mot de passe ### Utilisateurs (admin) GET /api/admin/users # Liste des utilisateurs POST /api/admin/users # Créer un utilisateur PUT /api/admin/users/:id # Modifier PUT /api/admin/users/:id/role # Changer le rôle DELETE /api/admin/users/:id # Supprimer ### Permissions GET /api/admin/permissions # Liste des permissions par rôle POST /api/admin/permissions # Ajouter une permission DELETE /api/admin/permissions/:id # Supprimer
🛠️ Guide d'implémentation
## Implémentation Auth + RBAC ### Étape 1 — Dépendances ```bash npm install bcryptjs jsonwebtoken @types/bcryptjs @types/jsonwebtoken ``` ### Étape 2 — Middleware d'authentification Créer `src/middleware/auth.ts` : - Extraire le JWT du header Authorization ou cookie - Vérifier la signature avec JWT_SECRET - Attacher l'utilisateur à la requête ### Étape 3 — Middleware RBAC Créer `src/middleware/rbac.ts` : - Vérifier le rôle de l'utilisateur - Vérifier les permissions granulaires (table permissions) - Retourner 403 si non autorisé ### Étape 4 — Routes d'authentification Implémenter les routes dans `src/app/api/auth/` - Hash bcrypt (coût 12) pour les mots de passe - JWT avec expiration 24h (access) + 30j (refresh) - Cookies httpOnly, secure, sameSite=strict ### Étape 5 — Seed des rôles et permissions Créer `prisma/seeds/permissions.ts` avec les permissions par défaut par rôle. ### Variables d'environnement requises ``` JWT_SECRET=<random-32-bytes> JWT_REFRESH_SECRET=<random-32-bytes> JWT_EXPIRES_IN=24h ```
Prêt à installer ce module ?
Ajoutez-le à un projet existant depuis la page modules du projet.