public async Task <ResponseWrapper <IdentityResult> > UpdateUserPass([FromBody] ChangePassRequestDTO req) { User user = _userManager.Users.FirstOrDefault(u => u.Id == User.Claims.FirstOrDefault(c => c.Type == "sub").Value); IdentityResult res = await _userManager.ChangePasswordAsync(user, req.OldPassword, req.NewPassword); if (!res.Succeeded) { return(new ResponseWrapper <IdentityResult>(res, Constants.RestReturn.ERR_USER_UPDATE)); } return(new ResponseWrapper <IdentityResult>(res)); }
public async Task <ResponseWrapper <IdentityResult> > ChangePass([FromBody] ChangePassRequestDTO req) { ClaimsHolder claimsHolder; try { claimsHolder = ClaimsUtils.ValidateUserClaimForIdSrvCall(User); } catch (RestReturnException ex) { return(new ResponseWrapper <IdentityResult>(ex.Value)); } var response = ClientUtils.GetROClient(Constants.A2BB_IDSRV_RESOURCE_NAME, Constants.A2BB_IDSRV_RO_CLIENT_ID, claimsHolder.Name, req.OldPassword); if (response.IsError) { return(new ResponseWrapper <IdentityResult>(Constants.RestReturn.ERR_INVALID_PASS)); } var userClient = new HttpClient(); userClient.DefaultRequestHeaders.Accept.Clear(); userClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); userClient.SetBearerToken(response.AccessToken); var body = new StringContent(JsonConvert.SerializeObject(req), Encoding.UTF8, "application/json"); var res = await userClient.PutAsync(Constants.IDENTITY_SERVER_ENDPOINT + "/api/me/changepass", body); if (!res.IsSuccessStatusCode) { return(new ResponseWrapper <IdentityResult>(Constants.RestReturn.ERR_USER_UPDATE)); } string resContent = await res.Content.ReadAsStringAsync(); var identityRes = JsonConvert.DeserializeObject <ResponseWrapper <IdentityResult> >(resContent); // Fix JSON deserialization if (identityRes.Payload.Errors.GetEnumerator().MoveNext() == false) { var prop = identityRes.Payload.GetType().GetProperty("Succeeded"); prop.SetValue(identityRes.Payload, true); } return(identityRes); }