RBAC

NestJS 🟡 Mid

Definition

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.
#security#interview