public async Task <IActionResult> NewPassword(UserNewPasswordDTO userNewPasswordDto) { if (ModelState.IsValid && userNewPasswordDto.Id != Guid.Empty && userNewPasswordDto.NewPassword.Equals(userNewPasswordDto.NewPasswordConfirm)) { var user = await _userManager.FindByIdAsync(userNewPasswordDto.Id.ToString()); if (user != null) { var _passwordValidator = HttpContext .RequestServices.GetService(typeof(IPasswordValidator <User>)) as IPasswordValidator <User>; var _passwordHasher = HttpContext.RequestServices.GetService(typeof(IPasswordHasher <User>)) as IPasswordHasher <User>; IdentityResult result = await _passwordValidator.ValidateAsync(_userManager, user, userNewPasswordDto.NewPassword); if (result.Succeeded) { user.PasswordHash = _passwordHasher.HashPassword(user, userNewPasswordDto.NewPassword); await _userManager.UpdateAsync(user); await _emailService.SendAsync(ChangePasswordSettings.subject, ChangePasswordSettings.GetMessage(userNewPasswordDto.Email, userNewPasswordDto.NewPassword), userNewPasswordDto.Email); return(RedirectToAction("Authenticate", "Account")); } else { foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } } else { ModelState.AddModelError(string.Empty, "Користувач незнайдений"); } } else { return(Content("Model state isn't valid")); } return(View(userNewPasswordDto)); }
public async Task <IActionResult> ChangePassword(UserChangePasswordDTO userChangePasswordDto) { if (ModelState.IsValid) { var nameOfCurrentUser = HttpContext.User.Identity.Name; var user = await _userManager.FindByNameAsync(nameOfCurrentUser); if (user != null) { IdentityResult result = await _userManager.ChangePasswordAsync(user, userChangePasswordDto.OldPassword, userChangePasswordDto.NewPassword); if (result.Succeeded) { await _emailService.SendAsync(ChangePasswordSettings.subject, ChangePasswordSettings.GetMessage(user.Email, userChangePasswordDto.NewPassword), user.Email); return(RedirectToAction("Index", "Home")); } else { foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } } else { ModelState.AddModelError(string.Empty, "Користувач незнайдений"); } } else { ModelState.AddModelError(string.Empty, "Неправильно введені дані"); } return(PartialView(userChangePasswordDto)); }