Гнездо. js Глобальная охрана - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в гнезде. js и у меня есть вопрос. У меня есть Ролевая охрана как это

import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Reflector } from '@nestjs/core';

@Injectable()
export class RolesGuard implements CanActivate {
  constructor(private readonly reflector: Reflector) {
  }

  canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
    const roles = this.reflector.get<string[]>('roles', context.getHandler());
    if (!roles) {
      return true;
    }
    const request = context.switchToHttp().getRequest();
    const user = request.user;
    return user.role.some(role => !!roles.find(item => item === role));
  }

}

Теперь я хочу использовать эту охрану как глобальную охрану как это

app.useGlobalGuards(new RolesGuard())

Но это говорит о том, что мне нужно передать аргумент (отражатель ) охраннику, как я уже упоминал в конструкторе, теперь будет нормально инициализировать отражатель следующим образом?

const reflector:Reflector = new Reflector();
app.useGlobalGuards(new RolesGuard(reflector))

Или есть лучший способ сделать это?

...