// roles.guard.tsimport{ Injectable, CanActivate, ExecutionContext }from'@nestjs/common';import{ Reflector }from'@nestjs/core';import{ROLES_KEY}from'./roles.decorator';@Injectable()exportclassRolesGuardimplementsCanActivate{constructor(private reflector: Reflector){}canActivate(context: ExecutionContext):boolean{// 핸들러 또는 클래스에서 roles 메타데이터를 읽음const requiredRoles =this.reflector.getAllAndOverride<string[]>(ROLES_KEY,[ context.getHandler(),// 메서드 레벨 먼저 context.getClass(),// 클래스 레벨 폴백]);if(!requiredRoles)returntrue;// 메타데이터 없으면 통과const{ user }= context.switchToHttp().getRequest();return requiredRoles.includes(user.role);}}