10. 접근권한(Role)

Eden·2023년 8월 9일
0

계정마다 접근 권한을 부여해보자

//role.enum.ts
export enum Role {
  USER = 'user',
  OPERATOR = 'operator',
  ADMIN = 'admin',
}

//user.entity.ts
+
@Column({ type: 'enum', enum: Role, array: true, default: [Role.USER]})
public roles: Role[];
  
  
//role.guard.ts
export const RoleGaurd = (role: Role): Type<CanActivate> => {// role을 매개변수로 받는 람다 함수
  class RoleGuardMixin extends JwtAuthGuard{
    async canActivate(context: ExecutionContext) {
      await super.canActivate(context);
      
      const req = context.switchToHttp().getRequest<RequstWithUser>();
      const user = req.user;
      
      return user?.roles.includes(role);
    }
  }
  return mixin(RoleGuardMixin);
};
  

접근권한을 부여할 api에
@UseGuards(RoleGuard(Role.ADMIN))
데코레이션을 사용해준다

profile
주섬주섬..

0개의 댓글