private static async Task UpdateConfigFileAsync(ConnectedServiceHandlerContext context, Project project, SalesforceConnectedServiceInstance salesforceInstance) { await Shell.ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); // The EditableConfigHelper must run on the UI thread. await context.Logger.WriteMessageAsync(LoggerMessageCategory.Information, Resources.LogMessage_UpdatingConfigFile); using (EditableXmlConfigHelper configHelper = context.CreateEditableXmlConfigHelper()) { foreach (ConfigSetting configSetting in salesforceInstance.RuntimeAuthentication.GetConfigSettings(salesforceInstance.ConnectedAppName)) { configHelper.SetAppSetting( ConfigurationKeyNames.GetQualifiedKeyName(configSetting.Key, salesforceInstance.DesignerData.ServiceName), configSetting.Value == null ? string.Empty : configSetting.Value.ToString(), configSetting.Comment); } if (salesforceInstance.RuntimeAuthentication.AuthStrategy == AuthenticationStrategy.WebServerFlow) { string handlerName = Constants.OAuthRedirectHandlerNameFormat.FormatInvariantCulture(salesforceInstance.DesignerData.ServiceName); string qualifiedHandlerTypeName = SalesforceConnectedServiceHandler.GetServiceNamespace(project, salesforceInstance.DesignerData.ServiceName) + Type.Delimiter + Constants.OAuthRedirectHandlerTypeName; string redirectUri = ((WebServerFlowInfo)salesforceInstance.RuntimeAuthentication).RedirectUri.ToString(); configHelper.RegisterRedirectHandler(handlerName, redirectUri, qualifiedHandlerTypeName); } configHelper.Save(); } }
/// <summary> /// Detects which authentication type/settings the service was previously configured with and /// initializes the view models accordingly. /// </summary> private void RestoreAuthenticationSettings() { using (XmlConfigHelper configHelper = context.CreateReadOnlyXmlConfigHelper()) { ConfigurationKeyNames configKeys = new ConfigurationKeyNames(this.DesignerData.ServiceName); if (configHelper.GetAppSetting(configKeys.UserName) != null) { this.runtimeAuthenticationTypeViewModel.RuntimeAuthStrategy = AuthenticationStrategy.UserNamePassword; } else { this.runtimeAuthenticationTypeViewModel.RuntimeAuthStrategy = AuthenticationStrategy.WebServerFlow; string myDomain = configHelper.GetAppSetting(configKeys.Domain); this.runtimeAuthenticationConfigViewModel.IsCustomDomain = myDomain != null && !string.Equals(myDomain, Constants.ProductionDomainUrl, StringComparison.OrdinalIgnoreCase); if (this.runtimeAuthenticationConfigViewModel.IsCustomDomain) { this.runtimeAuthenticationConfigViewModel.MyDomainViewModel.MyDomain = myDomain; } } } }