@OwDafuq

Как поступить с валидаторами и локализацией?

Доброго времени суток.
Пишу в данный момент WebAPI к которому потом будет сделан клиент, для этого выделил Core библиотеку с общими классами, которые будут использоваться и в API и в клиенте, но как быть с валидаторами (FluentValidation), которые могут использовать в себе сервисы API?
Как пример:
spoiler

public class RegistreRequestValidator : AbstractValidator<RegisterRequest>
{
    private readonly IAccountService accountService;

    /// <summary>
    /// Конструктор.
    /// </summary>
    public RegistreRequestValidator(
        IStringLocalizer<RegisterRequest> regLocalizer, 
        IStringLocalizer<SharedResources> sharedLocalizer,
        IAccountService accountService,
        IOptions<RegexSettings> options)
    {
        this.accountService = accountService;

        RuleFor(x => x.Email).EmailAddress().MustAsync(CheckEmailInDb).WithMessage(regLocalizer["EmailIsInUse"]);
        RuleFor(x => x.Password).NotEmpty().Matches(options.Value.UserPasswordPattern);
        RuleFor(x => x.ConfirmPassword).Equal(x => x.Password).WithMessage(sharedLocalizer["ConfirmPassword"]);
        RuleFor(x => x.FirstName).NotEmpty().Length(2, 30).Matches(options.Value.UserFirstNamePattern);
    }

    /// <summary>
    /// Проверяет, НЕ используется ли указанная почта у какого-либо пользователя.
    /// </summary>
    /// <param name="email">Почта.</param>
    /// <returns><see cref="bool">true</see> если почта НЕ используется</returns>
    async Task<bool> CheckEmailInDb(string email, CancellationToken _)
    {
        return !await accountService.CheckEmailAsync(email);
    }
}



Как такой валидатор можно отдать клиенту?
Что с ним можно сделать?
Реализовывать на API метод проверки почты, на клиенте реализовать IAccountService, который будет обращаться к API (безопасность пострадает же)?
Как быть с локализацией, когда resx файлы сейчас лежат в сборке рядом с валидатором.
Зачем тащить в клиент потом, если они не нужны будут клиенту, потому что он будет локализованные API ответы получать.
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы