Exemplo n.º 1
0
        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;
                    }
                }
            }
        }