create-chuntianxiaozhu
Version:
春天小猪模板工具
25 lines (22 loc) • 798 B
text/typescript
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { ROLES_KEY, RoleEnum } from '../utils/constants';
()
export class RolesGuard implements CanActivate {
constructor(private reflector: Reflector) {}
canActivate(context: ExecutionContext): boolean {
const requiredRoles = this.reflector.getAllAndOverride<RoleEnum[]>(
ROLES_KEY,
[context.getHandler(), context.getClass()],
);
if (!requiredRoles) {
return true;
}
const { user } = context.switchToHttp().getRequest();
if (user.roles?.includes(RoleEnum.SuperAdmin)) {
// 如果是超级管理员直接返回true
return true;
}
return requiredRoles.some((role) => user.roles?.includes(role));
}
}