@Roles('admin')
라우트 핸들러에 필요한 역할을 선언형 문장처럼 붙입니다.
커스텀 데코레이터는 메서드나 컨트롤러에 필요한 역할을 기록하고, 가드는 요청 사용자 정보와 그 기록을 비교합니다.
라우트 핸들러에 필요한 역할을 선언형 문장처럼 붙입니다.
`'roles'` 키에 `['admin']` 값을 저장해 런타임에서 읽을 수 있게 합니다.
RolesGuard가 handler와 class 메타데이터를 함께 조회합니다.
인증 가드가 채운 `request.user.roles`와 필요한 역할을 대조합니다.
일치하면 핸들러가 실행되고, 부족하면 Forbidden 응답으로 끝납니다.
`@Roles()`는 인증 상태를 보거나 DB를 조회하지 않습니다. 필요한 역할 목록을 코드 가까이에 남기는 데 집중합니다.
`canActivate()`에서 메타데이터와 사용자 정보를 조합해 라우트 접근 여부를 결정합니다.