auth-service-nestjs
Version:
Authorization service for lightweight systems
16 lines (13 loc) • 529 B
text/typescript
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
()
export class RoleGlobalGuard implements CanActivate {
constructor(private reflector: Reflector) {}
async canActivate(context: ExecutionContext): Promise<boolean> {
const roles = this.reflector.get<string[]>('roles', context.getHandler());
const { user: { role = undefined } = {} } = context
.switchToHttp()
.getRequest();
return !roles || roles.includes(role);
}
}