From aa09a2685c246c5690c8ef231d4ec9ec917ef5ab Mon Sep 17 00:00:00 2001 From: noahspannbauer Date: Sun, 16 Nov 2025 09:25:35 -0600 Subject: [PATCH] adding public decorator (#14) --- libs/modules/src/auth/auth.gaurd.ts | 8 ++++++++ libs/modules/src/decorators/public.decorator.ts | 4 ++++ libs/modules/src/index.ts | 4 ++++ 3 files changed, 16 insertions(+) create mode 100644 libs/modules/src/decorators/public.decorator.ts diff --git a/libs/modules/src/auth/auth.gaurd.ts b/libs/modules/src/auth/auth.gaurd.ts index 22229ff..bcce681 100644 --- a/libs/modules/src/auth/auth.gaurd.ts +++ b/libs/modules/src/auth/auth.gaurd.ts @@ -1,6 +1,7 @@ import { ExecutionContext, Injectable } from '@nestjs/common'; import { AuthGuard as PassportAuthGuard } from '@nestjs/passport'; import { Observable } from 'rxjs'; +import { IS_PUBLIC_KEY } from '../decorators/public.decorator'; @Injectable() export class AuthGuard extends PassportAuthGuard('oidc') { @@ -9,6 +10,13 @@ export class AuthGuard extends PassportAuthGuard('oidc') { } canActivate(context: ExecutionContext): boolean | Promise | Observable { + const isPublic = this.reflector.get( + IS_PUBLIC_KEY, + context.getHandler() + ) + + if (isPublic) return true; + return super.canActivate(context); } } \ No newline at end of file diff --git a/libs/modules/src/decorators/public.decorator.ts b/libs/modules/src/decorators/public.decorator.ts new file mode 100644 index 0000000..a37e802 --- /dev/null +++ b/libs/modules/src/decorators/public.decorator.ts @@ -0,0 +1,4 @@ +import { SetMetadata } from "@nestjs/common"; + +export const IS_PUBLIC_KEY = "isPublic"; +export const Public = () => SetMetadata(IS_PUBLIC_KEY, true); \ No newline at end of file diff --git a/libs/modules/src/index.ts b/libs/modules/src/index.ts index 6e3b586..4f6bed0 100644 --- a/libs/modules/src/index.ts +++ b/libs/modules/src/index.ts @@ -8,6 +8,10 @@ export * from './auth/public.decorator'; export * from './util/customError'; +// Decorators + +export { IS_PUBLIC_KEY, Public } from './decorators/public.decorator' + // User export * from './user/user.module';