summaryrefslogtreecommitdiff
path: root/server/providers/util/guard.util.ts
blob: 64d46279c6d6333aba3a6e44e65587ca17c3b9e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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));
  }
}