public ChangePasswordResult ChangePassword(ChangePasswordModel model) { var validationResult = ValidateChangeModel(model); if (validationResult != null) { return(validationResult); } try { var currentPasswordOkay = WebSecurity.Login(model.UserName, model.CurrentPassword, false); if (!currentPasswordOkay) { var badPasswordResult = new ChangePasswordResult { Success = false, Message = "The Current Password supplied is incorrect" }; badPasswordResult.AddFailingField(x => x.CurrentPassword); return(badPasswordResult); } WebSecurityService.UpdatePasswordAndActivate(model.UserName, model.NewPassword); return(ChangePasswordResult.Successful); } catch (Exception e) { _log.Error("ChangePassword", e); return(DatabaseUnreachableResult <ChangePasswordResult>()); } }
private ChangePasswordResult ValidateChangeModel(ChangePasswordModel model) { var failedRequiredField = ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.CurrentPassword, model) ?? ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.NewPassword, model) ?? ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.ConfirmPassword, model); if (failedRequiredField != null) { return(failedRequiredField); } var confirmationMismatch = !model.NewPassword.Equals(model.ConfirmPassword); if (confirmationMismatch) { var mismatchResult = new ChangePasswordResult { Message = "New Password and Confirm Password must match.", Success = false }; mismatchResult.AddFailingField(x => x.NewPassword) .AddFailingField(x => x.ConfirmPassword); return(mismatchResult); } if (!_passwordService.PasswordIsStrong(model.NewPassword)) { return(new ChangePasswordResult { Success = false, Message = "NewPassword is invalid" } .AddFailingField(x => x.NewPassword)); } return(null); }
public async Task <ChangePasswordResult> ChangePassword(ChangePasswordModel model) { var validationResult = ValidateChangeModel(model); if (validationResult != null) { return(validationResult); } try { var currentPasswordOkay = await _identityProvider.VerifyUserPassword(model.UserName, model.CurrentPassword); if (!currentPasswordOkay) { var badPasswordResult = new ChangePasswordResult { Success = false, Message = "The Current Password supplied is incorrect" }; badPasswordResult.AddFailingField(x => x.CurrentPassword); return(badPasswordResult); } await _identityProvider.ResetUserPassword(model.UserName, model.NewPassword); return(ChangePasswordResult.Successful); } catch (Exception e) { _log.Error("ChangePassword", e); return(DatabaseUnreachableResult <ChangePasswordResult>()); } }