public async Task ResetPassword(UserPasswordResetModel userPasswordResetModel) { var user = await _verificationService.ValidateVerificationKey(userPasswordResetModel.Key, UserVerificationType.PasswordReset); if (user.Email != userPasswordResetModel.Username && user.Username != userPasswordResetModel.Username) { throw new StatusCodeException(HttpStatusCode.BadRequest); } var passwordHashResult = _hashService.GetHash(userPasswordResetModel.Password); user.Password = passwordHashResult.Hash; user.PasswordSalt = passwordHashResult.Salt; await _entityRepository.UpdateEntity(user, null); }
public IActionResult ResetPasswordForUser(UserPasswordResetModel user) { if (user.Password != user.PasswordRepeat) { TempData["ErrorMessage"] = "Passwords do not match"; return(RedirectToAction("ResetPasswordForUser")); } if (!String.IsNullOrEmpty(user.TokenHash)) { string dateTimeFormat = "yyyyMMddHHmmss"; DateTime currentDateTime = Convert.ToDateTime(DateTime.Now.ToString(dateTimeFormat)); var tokenInDbForUser = _mapper.Map <PasswordResetModel>(_passwordReset.Get().Where(r => r.Email == user.Email && r.TokenHash == user.TokenHash && DateTime.ParseExact(r.ExpirationDate, dateTimeFormat, null) >= currentDateTime && r.TokenUsed == 0)); if (tokenInDbForUser == null) { TempData["ErrorMessage"] = "Link for reset expired"; return(RedirectToAction("ResetPasswordForUser")); } UserViewModel userVm = _mapper.Map <UserViewModel>(_userRepository.Get().Where(u => u.Email == user.Email)); if (userVm != null) { userVm.Password = user.PasswordRepeat; _userRepository.Update(_mapper.Map <User>(userVm)); _userRepository.Save(); //Update Token tab tokenInDbForUser.TokenUsed = 1; _passwordReset.Update(_mapper.Map <PasswordReset>(tokenInDbForUser)); _passwordReset.Save(); TempData["SuccessMessage"] = "Password successfully changed."; return(RedirectToAction("SignIn")); } } return(RedirectToAction("ResetPassword")); }
public async Task ResetPassword(UserPasswordResetModel userPasswordResetModel) { await _accountManagementService.ResetPassword(userPasswordResetModel); }