4 changed files with 34 additions and 3 deletions
@ -0,0 +1,3 @@ |
|||
import { Reflector } from '@nestjs/core'; |
|||
|
|||
export const Roles = Reflector.createDecorator<string[]>(); |
|||
@ -0,0 +1,26 @@ |
|||
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; |
|||
import { Reflector } from '@nestjs/core'; |
|||
import { Roles } from './roles.decorator'; |
|||
|
|||
@Injectable() |
|||
export class RolesGuard implements CanActivate { |
|||
constructor(private reflector: Reflector) {} |
|||
|
|||
canActivate(context: ExecutionContext): boolean { |
|||
const roles = this.reflector.get(Roles, context.getHandler()); |
|||
if (!roles) { |
|||
return true; |
|||
} |
|||
const request = context.switchToHttp().getRequest(); |
|||
const user = request.user; |
|||
|
|||
roles.forEach(role => { |
|||
if(user.permissions.includes(role) == false) { |
|||
console.log("Missing " + role + " permission") |
|||
return false; |
|||
} |
|||
}); |
|||
|
|||
return true; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue