계정마다 접근 권한을 부여해보자
//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))
데코레이션을 사용해준다