public static Password Create(string plainTextPassword, PasswordValidator validator, IPasswordHasher passwordHasher) { PasswordValidationResult result = validator.Validate(plainTextPassword); if (!result.IsSuccessful) { throw new PasswordDidNotMeetRequirementsException("Password does not requirements.", result); } return(new Password(passwordHasher.HashPassword(plainTextPassword))); }
public PasswordValidationResult Validate(string plainTextPassword) { if (string.IsNullOrEmpty(plainTextPassword)) { throw new ArgumentException("Password is null or empty.", nameof(plainTextPassword)); } PasswordValidationResult result = new PasswordValidationResult(); foreach (IPasswordRequirement requirement in _passwordRequirements) { if (!requirement.IsSatisfiedBy(plainTextPassword)) { result.AddValidationFailure(requirement.ErrorMessage); } } return(result); }