Как передать токен аутентификации из класса в пользовательский валидатор? - PullRequest
1 голос
/ 05 февраля 2020

У меня есть класс, который имеет переменную authToken и переменную с настраиваемым валидатором, для работы которого необходимо использовать authToken:

export default class ClassToValidate {
  private authToken: string;

  @MyCustomValidator()
  fieldToValidate: SomeOtherClass;

  // ... some other logic
}

@ValidatorConstraint({ async: true })
export class MyCustomValidatorConstraint implements ValidatorConstraintInterface {
  private axiosInstance: AxiosInstance;

  constructor() {
    this.axiosInstance = axios.create({
      baseURL: `www.someUrl.com`,
      headers: {
        'Authorization': //README: how can I set this to the authToken in ClassToValidate?
      }
    });
  }

  async validate(fieldToValidate: any, args: ValidationArguments) {
      try {
        const result = await this.axiosInstance.get(`${fieldToValidate}`, {});
        return true
      } catch (error) {
        return false;
      }
    }

  defaultMessage(args: ValidationArguments) { // here you can provide default error message if validation failed
    return "Something failed";
  }

}

export function MyCustomValidator(validationOptions?: ValidationOptions) {
  return function (object: Object, propertyName: string) {
    registerDecorator({
      target: object.constructor,
      propertyName: propertyName,
      options: validationOptions,
      constraints: [],
      validator: MyCustomValidatorConstraint
    });
  };
}

Как передать authToken из экземпляра ClassToValidate к пользовательскому конструктору класса валидатора?

...