nestjs_auth ini...
This commit is contained in:
parent
f339a6462c
commit
922701306a
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user