diff --git a/libs/modules/src/auth/auth.guard.ts b/libs/modules/src/auth/auth.guard.ts index 52e8561..e29cb3a 100644 --- a/libs/modules/src/auth/auth.guard.ts +++ b/libs/modules/src/auth/auth.guard.ts @@ -2,6 +2,7 @@ import { ExecutionContext, Injectable } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; 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('jwt') { @@ -10,6 +11,13 @@ export class AuthGuard extends PassportAuthGuard('jwt') { } 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 5a7bc05..6243100 100644 --- a/libs/modules/src/index.ts +++ b/libs/modules/src/index.ts @@ -7,6 +7,10 @@ export * from './auth/auth.guard'; export * from './util/customError'; +// Decorators + +export { IS_PUBLIC_KEY, Public } from './decorators/public.decorator' + // MsGraph export * from './msgraph/msgraph.module';