public async Task <IActionResult> ChangePassword([FromBody] ChangePasswordModel model) { var request = new ChangeUserPasswordOperationRequest { NewPassword = model.NewPassword, OldPassword = model.OldPassword }; try { await _changeUserPasswordOperation.Execute(request); } catch (WrongPasswordException exception) { return(BadRequest(new ErrorModel(exception.Message))); } return(Ok()); }
public async Task Execute(ChangeUserPasswordOperationRequest request) { Task <IdentityUser> identityTask = _authorizationContext.CurrentIdentity(); string oldPasswordHash = Sha256Hash.Calculate(request.OldPassword); string newPasswordHash = Sha256Hash.Calculate(request.NewPassword); IdentityUser identity = await identityTask; if (identity.PasswordHash == oldPasswordHash) { identity.PasswordHash = newPasswordHash; await _userRepository.UpdateAsync(identity); } else { throw new WrongPasswordException(); } }