import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { Observable } from 'rxjs'; import { Reflector } from '@nestjs/core'; import { AuthModule } from 'kkk-lib/auth/auth.module'; @Injectable() export class ManagerOnlyGuard implements CanActivate { constructor(private reflector: Reflector) {} canActivate( context: ExecutionContext, ): boolean | Promise | Observable { let roles = this.reflector.get('roles', context.getHandler()); const request = context.switchToHttp().getRequest(); const user = request.user; if (!roles || roles.length === 0) { if (AuthModule.manageName) { roles = [AuthModule.manageName]; } else { roles = ['管理员']; } } return roles.some((it: string) => { return it === user.profile.userType.name; }); } }