RegistrationRequestValidator.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using FluentValidation;
  2. using WebApp.Common.Resources;
  3. using WebApp.Models.Request.Accounts;
  4. namespace WebApp.Models.Validators;
  5. public class RegistrationRequestValidator : ApplicationValidator<RegistrationRequestModel>
  6. {
  7. public RegistrationRequestValidator()
  8. {
  9. RuleFor(x => x.UserName)
  10. .NotEmpty()
  11. .WithMessage(Messages.EmptyRequiredField);
  12. RuleFor(x => x.UserName)
  13. .Length(3, 50)
  14. .WithMessage(Messages.InvalidLengthRange);
  15. RuleFor(x => x.UserName)
  16. .Must(x => x.All(c => char.IsLetterOrDigit(c)))
  17. .WithMessage(Messages.InvalidUserName)
  18. .When(x => x.UserName is not null);
  19. RuleFor(x => x.Email)
  20. .NotEmpty()
  21. .WithMessage(Messages.EmptyRequiredField);
  22. RuleFor(x => x.Email)
  23. .Must(x => ValidatorHelper.ValidateEmail(x))
  24. .WithMessage(Messages.InvalidEmail);
  25. RuleFor(x => x.Password)
  26. .NotEmpty()
  27. .WithMessage(Messages.EmptyRequiredField);
  28. RuleFor(x => x.Password)
  29. .Length(6, 20)
  30. .WithMessage(Messages.InvalidLengthRange);
  31. RuleFor(x => x.ConfirmPassword)
  32. .NotEmpty()
  33. .WithMessage(Messages.EmptyRequiredField);
  34. RuleFor(x => x.ConfirmPassword)
  35. .Length(6, 20)
  36. .WithMessage(Messages.InvalidLengthRange);
  37. RuleFor(x => x)
  38. .Must(x => x.Password.Equals(x.ConfirmPassword)).WithName("Password")
  39. .When(x => x.Password is not null && x.ConfirmPassword is not null)
  40. .WithMessage(Messages.PasswordMismatch);
  41. }
  42. }