fix(guard): small fix
This commit is contained in:
parent
594d5af0cd
commit
814b25742b
|
|
@ -17,22 +17,19 @@ interface RequestWithUser extends Request {
|
||||||
export class RolesGuard implements CanActivate {
|
export class RolesGuard implements CanActivate {
|
||||||
constructor(private reflector: Reflector) {}
|
constructor(private reflector: Reflector) {}
|
||||||
|
|
||||||
canActivate(ctx: ExecutionContext): boolean {
|
canActivate(context: ExecutionContext): boolean {
|
||||||
const requiredRoles = this.reflector.get<Roles[]>(
|
const roles = this.reflector.getAllAndOverride<Roles[]>(ROLES_KEY, [context.getHandler(), context.getClass()]);
|
||||||
ROLES_KEY,
|
|
||||||
ctx.getHandler(),
|
if (!roles) {
|
||||||
);
|
return true;
|
||||||
//for "deny-by-default" when role is wrong or unavailable
|
|
||||||
if (!requiredRoles || requiredRoles.length === 0) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
const request = ctx.switchToHttp().getRequest<RequestWithUser>();
|
const request = context.switchToHttp().getRequest<RequestWithUser>();
|
||||||
const user = request.user;
|
const user = request.user;
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!requiredRoles.includes(user.role)) {
|
if (!roles.includes(user.role)) {
|
||||||
throw new ForbiddenException(
|
throw new ForbiddenException(
|
||||||
`The role ${user.role} is not authorized to access this resource.`,
|
`The role ${user.role} is not authorized to access this resource.`,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user