diff options
Diffstat (limited to 'server/providers/util')
-rw-r--r-- | server/providers/util/guard.util.ts | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/server/providers/util/guard.util.ts b/server/providers/util/guard.util.ts new file mode 100644 index 0000000..64d4627 --- /dev/null +++ b/server/providers/util/guard.util.ts @@ -0,0 +1,17 @@ +import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { SKIP_KEY } from 'server/decorators/skip.decorator'; +import { Class } from 'server/dto/class.dto'; + +@Injectable() +export class GuardUtil { + constructor(private reflector: Reflector) {} + + public shouldSkip(guard: CanActivate, context: ExecutionContext) { + const skippedGuards = this.reflector.getAllAndOverride<Class<CanActivate>[]>(SKIP_KEY, [ + context.getHandler(), + context.getClass(), + ]); + return !!(skippedGuards && skippedGuards.find((SkippedGuard) => guard instanceof SkippedGuard)); + } +} |