public async Task <ActionResult> ChangeContactAsync([FromBody][Required] ChangeContactContract contract) { if (m_logger.IsEnabled(LogLevel.Information)) { m_logger.LogInformation(GetMethodCalledLoggingString(null, contract)); } DataResult <bool> changeResult = null; var user = await m_identityUserManager.GetUserByIdAsync(contract.UserId); if (contract.ContactType == ContactTypeEnum.Email && !string.Equals(contract.NewContactValue, user.Email, StringComparison.OrdinalIgnoreCase)) { changeResult = await m_identityUserManager.ChangeEmailAsync(user, contract.NewContactValue); if (changeResult.HasError) { return(Error(changeResult.Error)); } if (changeResult.Result) { user = await m_identityUserManager.GetUserByIdAsync(contract.UserId); //Reload user with updated email related properties AdjustTwoFactorOnEmailChange(user); } } if (contract.ContactType == ContactTypeEnum.Phone && contract.NewContactValue != user.PhoneNumber) { changeResult = await m_identityUserManager.ChangePhoneAsync(user, contract.NewContactValue); if (changeResult.HasError) { return(Error(changeResult.Error)); } if (changeResult.Result) { user = await m_identityUserManager.GetUserByIdAsync(contract.UserId); //Reload user with updated phone related properties AdjustTwoFactorOnPhoneChange(user); } } //If change result is null, new contact value is same as original value (this should not happen, because there is check on portal before sending request for contact change), return true as if everything went ok return(Json(changeResult?.Result ?? true)); }
public async Task <bool> ChangeContactAsync(ChangeContactContract contract) { var fullPath = $"{BasePath}changeContact"; return(await m_authorizationServiceHttpClient.SendRequestAsync <bool>(HttpMethod.Post, fullPath, contract)); }