public async Task <OperationDetailDTO> UpdatePasswordAsync(PasswordUpdateDTO dto) { var detail = new OperationDetailDTO(); if (dto == null) { detail.ErrorMessages.Add("Параметр, полученный от клиентского приложения, был равен null"); return(detail); } try { var user = await GetUserFromClaimsAsync(); if (String.IsNullOrEmpty(dto.CurrentPassword) || String.IsNullOrEmpty(dto.NewPassword)) { detail.ErrorMessages.Add("Введены некорректные данные."); return(detail); } var passwordRes = _userManager.PasswordHasher.VerifyHashedPassword(user, user.PasswordHash, dto.CurrentPassword); if (passwordRes == PasswordVerificationResult.Success) { var passwordResetToken = await _userManager.GeneratePasswordResetTokenAsync(user); var passwordResetResult = await _userManager.ResetPasswordAsync(user, passwordResetToken, dto.NewPassword); if (passwordResetResult.Succeeded) { detail.Succeeded = true; } else { detail.ErrorMessages.Add("Некорректно введён новый пароль."); foreach (var error in passwordResetResult.Errors.ToList()) { detail.ErrorMessages.Add(error.Description); } } } else { detail.ErrorMessages.Add("Введён неверный текущий пароль."); } return(detail); } catch (Exception e) { detail.ErrorMessages.Add(_serverErrorMessage + e.Message); return(detail); } }
public async Task <IActionResult> UpdatePasswordAsync([FromBody] PasswordUpdateDTO dto) { var res = await _accountService.UpdatePasswordAsync(dto); return(Ok(res)); }
public virtual async Task ChangePassword([FromBody] PasswordUpdateDTO password) { await _authService.ChangePasswordAsync(password.Password, password.ResetHash); }