src/auth/roles/roles.guard.ts
Methods |
constructor(reflector: Reflector)
|
||||||
Defined in src/auth/roles/roles.guard.ts:7
|
||||||
Parameters :
|
canActivate | ||||||
canActivate(context: ExecutionContext)
|
||||||
Defined in src/auth/roles/roles.guard.ts:10
|
||||||
Parameters :
Returns :
boolean
|
import { CanActivate, ExecutionContext, Injectable } from "@nestjs/common";
import { Reflector } from "@nestjs/core";
import { Role } from "./role.enum";
import { ROLES_KEY } from "./roles.decorator";
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(context: ExecutionContext): boolean {
const requiredRoles = this.reflector.getAllAndOverride<Role[]>(
ROLES_KEY,
[context.getHandler(), context.getClass()],
);
if (!requiredRoles) {
return true;
}
const { user } = context.switchToHttp().getRequest();
return requiredRoles.some((role) => user.roles?.includes(role));
}
}