public bool IsValidPasswordForm(ModelState modelState, ChangePasswordFormViewModel passwordForm, string oldPassword = null)
        {
            var prefix        = nameof(passwordForm);
            var passwordField = $"{prefix}.{nameof(passwordForm.Password)}";

            var validationRules = new List <ValidationRuleItem <ChangePasswordFormViewModel> >()
            {
                new ValidationRuleItem <ChangePasswordFormViewModel> {
                    Field = passwordField, Rule = model => !string.IsNullOrEmpty(model.Password), ErrorMessage = "validation.required".AsWebSiteString()
                },
                new ValidationRuleItem <ChangePasswordFormViewModel> {
                    Field = passwordField, Rule = model => oldPassword == null || !model.Password.Equals(oldPassword), ErrorMessage = "changepassword.newpasswordequalstheoldpassword".AsWebSiteString()
                },
                new ValidationRuleItem <ChangePasswordFormViewModel> {
                    Field = passwordField, Rule = model => _userValidationService.IsValidPassword(model.Password), ErrorMessage = "changepassword.invalidpasswordformat".AsWebSiteString()
                },
                new ValidationRuleItem <ChangePasswordFormViewModel> {
                    Field = passwordField, Rule = model => _userValidationService.IsPasswordMatch(model.Password, model.ConfirmPassword), ErrorMessage = "changepassword.passwordconfirmationdoesnotmatch".AsWebSiteString()
                },
                new ValidationRuleItem <ChangePasswordFormViewModel> {
                    Field = passwordField, Rule = model => _userValidationService.IsValidPasswordComplexity(model.Password), ErrorMessage = "changepassword.weakpassword".AsWebSiteString()
                },
            };

            return(passwordForm.IsValid(validationRules, modelState));
        }
        public override string GeneratePassword()
        {
            var pass = Security.RandomStringGenerator.Generate(4, 4, 0, 2);

            return(_userValidationService.IsValidPasswordComplexity(pass) ? pass : Security.RandomStringGenerator.Generate(4, 4, 1, 4));
        }