using Atomx.Admin.Client.Models; using FluentValidation; namespace Atomx.Admin.Client.Validators { public class LoginModelValidator : AbstractValidator { public LoginModelValidator() { RuleFor(p => p.Account).NotEmpty().WithMessage("登录账号不能为空"); RuleFor(p => p.Account).Length(2, 100).When(p => !string.IsNullOrEmpty(p.Account)).WithMessage("用户名长度必须再2-100个字符之间"); //RuleFor(p => p.Account).EmailAddress().When(p => !p.Account.Contains("@") && !string.IsNullOrEmpty(p.Account)).WithMessage("电子邮件地址不正确"); //RuleFor(p => p.Username).NotEmpty().WithMessage("用户名不能为空"); //RuleFor(p => p.Username).Length(2, 50).When(p => !string.IsNullOrEmpty(p.Username)).WithMessage("用户名长度必须再2-50个字符之间"); //RuleFor(p => p.Account).NotEmpty().WithMessage("电子邮件地址不能为空"); //RuleFor(p => p.Email).EmailAddress().When(p => !string.IsNullOrEmpty(p.Email)).WithMessage(p => localizer["Form.Email.Invalid"]); //RuleFor(p => p.Email).MaximumLength(128).When(p => !string.IsNullOrEmpty(p.Email)).WithMessage(p => localizer["Form.Email.LengthInvalid"]); RuleFor(p => p.Password).NotEmpty().WithMessage("请输入登录密码"); RuleFor(p => p.Password).Length(6, 32).When(p => !string.IsNullOrEmpty(p.Password)).WithMessage("登录密码必须在6-32位长度之间"); //RuleFor(p => p.ConfirmPassword).NotEmpty().WithMessage(p => localizer["Form.ConfirmPassword.Empty"]); //RuleFor(p => p.ConfirmPassword).Equal(p => p.Password).When(p => !string.IsNullOrEmpty(p.Password) && !string.IsNullOrEmpty(p.ConfirmPassword)).WithMessage(p => localizer["Form.ConfirmPassword.Different"]); } public Func>> ValidateValue => async (model, propertyName) => { var result = await ValidateAsync(ValidationContext.CreateWithOptions((LoginModel)model, x => { x.IncludeProperties(propertyName); })); if (result.IsValid) return Array.Empty(); return result.Errors.Select(e => e.ErrorMessage); }; } }