반응형
nestjs에서는 데코레이터를 통한 접근 권한을 설정 할 수 있다.
이 때, 접근권한을 사용할 시에는 @useGuards() 라는 기본적인 가드 데코레이터를 사용할 수 있는데, 이 부분을 커스텀하여 어떠한 사용자가 어떤 api를 사용할 수 있는지 수정할 수 있다.
아래에는 예시 코드이다.
나는 @PermissionRole 이라는 데코레이터를 설정해서 해당 메뉴코드에 해당하는 유저만 해당 resolver를 접근할 수 있도록 설정했다.
그리고 query 또는 mutation 위에다만 데코레이터를 달면 해당 쿼리 및 뮤테이션만 권한이 설정되고, @Resolver 아래에 @UseGuars 또는 커스텀된 데코레이터를 작성하면 해당 resolver.ts의 모든 쿼리 및 뮤테이션에 권한설정이 지정된다.
const MENU_CODE = MenuCodeEnum.ADMIN_USER;
@Resolver(() => DepartmentPermissionType)
@PermissionRole({
menuCode: MENU_CODE,
})
@Mutation(() => OperAdminResponseType, {
name: 'ADMIN_departmentPermissionBatchPutMutation',
description: '[운영관리자] 부서 권한 일괄 등록&수정',
})
async batchPutDepartmentPermission(
@Args('ADMIN_departmentPermissionBatchPutMutationInput', {
type: () => [DepartmentPermissionBatchPutMutationInput],
nullable: false,
})
args: DepartmentPermissionBatchPutMutationInput[],
@Context() context,
) {
await this.operAdminDynamodbService.batchPutDepartmentPermission(args);
await this.operAdminDynamodbService.createActivityLog(
{
actionName: '부서 권한',
actionMethod: 'UPDATE',
actionMenuCode: MENU_CODE,
actionServiceCode: 'ADMIN',
isActionResult: true,
response: JSON.stringify({ result: true }),
},
context,
);
return { result: true };
}
반응형
'백엔드 > NestJs' 카테고리의 다른 글
[nestjs] PickType,OmitType, PartialType (0) | 2023.09.25 |
---|---|
리졸브필드(resolveField) (0) | 2023.07.31 |
[nestjs] new DataLoader (0) | 2023.07.02 |
[nestjs] nx 모노레포?? (0) | 2023.06.25 |
[nestjs 강의] graphql & typeorm part2~3 (1) | 2023.06.18 |