nestjs_auth ini...

This commit is contained in:
최준흠 2022-09-02 12:44:30 +09:00
parent f339a6462c
commit 922701306a
2 changed files with 7 additions and 5 deletions

View File

@ -1,4 +1,5 @@
import { SetMetadata } from '@nestjs/common' import { SetMetadata } from '@nestjs/common'
import { Role } from '../guards/role.enum' import { Role } from '../guards/role.enum'
export const HasRoles = (...roles: Role[]) => SetMetadata('has-roles', roles) export const ROLES_KEY = 'roles'
export const HasRoles = (...roles: Role[]) => SetMetadata(ROLES_KEY, roles)

View File

@ -1,6 +1,7 @@
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common' import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'
import { Reflector } from '@nestjs/core' import { Reflector } from '@nestjs/core'
import { Observable } from 'rxjs' import { Observable } from 'rxjs'
import { ROLES_KEY } from '../decorators/has-roles.decorator'
import { Role } from './role.enum' import { Role } from './role.enum'
//참고: https://shpota.com/2022/07/16/role-based-authorization-with-jwt-using-nestjs.html //참고: https://shpota.com/2022/07/16/role-based-authorization-with-jwt-using-nestjs.html
@ -11,10 +12,10 @@ export class RolesGuard implements CanActivate {
canActivate( canActivate(
context: ExecutionContext context: ExecutionContext
): boolean | Promise<boolean> | Observable<boolean> { ): boolean | Promise<boolean> | Observable<boolean> {
const requiredRoles = this.reflector.getAllAndOverride<Role[]>( const requiredRoles = this.reflector.getAllAndOverride<Role[]>(ROLES_KEY, [
'has-roles', context.getHandler(),
[context.getHandler(), context.getClass()] context.getClass()
) ])
if (!requiredRoles) { if (!requiredRoles) {
return true return true
} }