@point3/logto-module
Version:
포인트3 내부 logto Authentication 모듈입니다
17 lines (14 loc) • 697 B
text/typescript
import { applyDecorators, UseGuards, SetMetadata } from '@nestjs/common';
import { LogtoTokenGuard } from './guard';
type LogtoProtectedOptions<T> = Partial<{
requiredScopes: string[],
requiredRoles: (T | 'management-point3')[]
}>
export function LogtoProtected<RoleType>(options?: LogtoProtectedOptions<RoleType>): ReturnType<typeof applyDecorators> {
const { requiredScopes, requiredRoles } = options ?? {};
return applyDecorators(
UseGuards(LogtoTokenGuard),
SetMetadata('requiredScopes', requiredScopes && requiredScopes.length > 0 ? requiredScopes : undefined),
SetMetadata('requiredRoles', requiredRoles && requiredRoles.length > 0 ? requiredRoles : undefined),
);
}