Spaces:
Sleeping
Sleeping
| import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; | |
| import { Reflector } from '@nestjs/core'; | |
| import { UserRole } from '../../entities/user.entity'; | |
| () | |
| export class RolesGuard implements CanActivate { | |
| constructor(private reflector: Reflector) {} | |
| canActivate(context: ExecutionContext): boolean { | |
| const requiredRoles = this.reflector.getAllAndOverride<UserRole[]>( | |
| 'roles', | |
| [context.getHandler(), context.getClass()], | |
| ); | |
| if (!requiredRoles) { | |
| return true; | |
| } | |
| const { user } = context.switchToHttp().getRequest(); | |
| return requiredRoles.some((role) => user?.role === role); | |
| } | |
| } | |