Performance: Role-based guards
MEDIUM IMPACT
Role-based guards affect the server response time and user interaction speed by controlling access before executing route handlers.
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; @Injectable() export class RoleGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { const request = context.switchToHttp().getRequest(); const user = request.user; // Simple role check without heavy computation return user?.roles?.includes('admin') ?? false; } }
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; @Injectable() export class RoleGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { const request = context.switchToHttp().getRequest(); const user = request.user; // Check roles inline with complex logic if (user && user.roles && user.roles.includes('admin')) { // additional heavy synchronous checks for (let i = 0; i < 1000000; i++) {} return true; } return false; } }
| Pattern | Server Processing | Event Loop Blocking | Response Delay | Verdict |
|---|---|---|---|---|
| Heavy synchronous role checks | High CPU usage | Blocks event loop 50+ ms | Delays response significantly | [X] Bad |
| Simple role inclusion check | Minimal CPU usage | No event loop blocking | Fast response | [OK] Good |