NestJS Доступ HTTP-запроса в @ResolveProperty guard? - PullRequest
0 голосов
/ 17 мая 2018

Я нахожусь в процессе разработки API-интерфейса Graphql с Nest JS (я только что обновил его до 5.0.0), в котором мне нужно разрешить только определенным пользователям (по ролям) доступ к частям запросов, которыеpublic.

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

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

    canActivate(context: ExecutionContext): boolean {

        const req = context.switchToHttp().getRequest();

        const roles = this.reflector.get<string[]>('roles', context.getHandler());
        if (!roles) // if no roles specified
            return true;

        console.log(req); // Displays Query() parent result instead of HTTP Request Object

        return false;
    }
}

Подразделы запросов обрабатываются с помощью @ResolveProperty() декорированных функций.

Следуя документации, я начал использовать Guards, но я только что обнаружил, что при использовании guard, вВ контексте распознавателя GraphQL context.switchToHttp().getRequest() возвращает только результат родительского Query () ...

Я действительно не знаю, является ли это ожидаемым поведением, и если это так, если есть способполучить доступ к полному объекту экспресс-запроса из GraphQL Guard?

...