import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { Observable } from 'rxjs'; import { Reflector } from '@nestjs/core'; @Injectable() export class MoreLevelGuard implements CanActivate { constructor(private reflector: Reflector) {} canActivate( context: ExecutionContext, ): boolean | Promise | Observable { const roles = this.reflector.get('roles', context.getHandler()); const request = context.switchToHttp().getRequest(); const user = request.user; if (roles && roles[0] && roles[0] <= user.level) { return true; } else { return false; } } }