데코레이터 경계

커스텀 데코레이터 책임

@User()ExecutionContext에서 request.user를 읽어 매개변수로 주입하고, @Roles()SetMetadata로 역할 요구사항을 남겨 RolesGuard가 읽게 한다.

@User()

요청 객체 접근을 숨김

ctx.switchToHttp().getRequest()로 HTTP 요청을 얻고, 전체 사용자 또는 username 같은 특정 속성을 반환한다.

매개변수 주입
auth

사용자 설정은 가드나 미들웨어

데코레이터가 동작하려면 먼저 JWT 가드 또는 인증 미들웨어가 req.user를 채워야 한다.

선행 보장
@Roles()

권한 요구사항은 메타데이터

SetMetadata('roles', roles)로 컨트롤러 또는 메서드에 필요한 역할을 선언적으로 붙인다.

선언형 정책
guard

Reflector로 정책을 읽음

RolesGuard는 클래스와 핸들러 메타데이터를 함께 조회하고, 사용자 역할과 비교해 접근을 결정한다.

실행 시 판단