RBAC
NestJS 🟡 MidDefinition
Role-Based Access Control : systeme d'autorisation ou les permissions sont attribuees a des roles (admin, user, editor) plutot qu'a des individus.
Analogie
Comme les cles d'un immeuble : le gardien a le passe-partout, les residents ont la cle de leur etage.
Exemple de code
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(ctx: ExecutionContext) {
const roles = this.reflector.get<string[]>('roles', ctx.getHandler());
if (!roles) return true;
const user = ctx.switchToHttp().getRequest().user;
return roles.includes(user.role);
}
}
Cas d'usage
Restreindre l'acces aux endpoints admin ou moderateur selon le role de l'utilisateur.
Anti-pattern
Hardcoder les verifications de role dans chaque handler au lieu d'utiliser un guard + metadata.