From 929dc6f46d4f979f0b91bfd57aa1090c5e965124 Mon Sep 17 00:00:00 2001 From: Natalie Tay Date: Thu, 5 Sep 2024 22:48:32 +0800 Subject: [PATCH] DEV: Add verbose auth logs (#92) Add verbose auth logs Example result: ``` OAuth Debugging: response status 200 From POST https://login.salesforce.com/id/XXXX/YYYY Headers: {"User-Agent"=>"Faraday v2.11.0", "Authorization"=>"Bearer XYZ", "Content-Length"=>"0"} Body: {"id":"https://login.salesforce.com/id/XXXX/YYYYY","asserted_user":true,"user_id":"YYYYY","organization_id":"XXXX","username":"discy.mcdiscface@discourse.org","nick_name":"discourse.team","display_name":"Discourse Team","email":"discy.mcdiscface@discourse.org","email_verified":true,"first_name":"Discourse","last_name":"Team","timezone":"America/Los_Angeles","photos":... ``` --- config/locales/server.en.yml | 1 + config/settings.yml | 2 ++ plugin.rb | 24 +++++++++++++++++------- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 82ac8ee..053df19 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -13,6 +13,7 @@ en: salesforce_case_status_tag_prefix: "Prefix to add before Salesforce case status tags. For example, if prefix is 'case' then the tags will be added like case-open, case-closed, etc." salesforce_skip_contact_creation_on_case_sync: "Skip creation of Salesforce Contact during Case sync" salesforce_default_contact_id_for_case_sync: "Default Salesforce Contact ID to use during Case sync. Useful when 'salesforce_skip_contact_creation_on_case_sync' is enabled." + salesforce_auth_verbose_logging: "Show verbose Salesforce authentication logs in /logs for troubleshooting" errors: salesforce_client_credentials_required: "Salesforce client id and client secret settings are required" salesforce: diff --git a/config/settings.yml b/config/settings.yml index 0859644..95f9a67 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -50,3 +50,5 @@ discourse_salesforce: salesforce_api_error_logs: default: false hidden: true + salesforce_auth_verbose_logging: + default: false diff --git a/plugin.rb b/plugin.rb index c13fd5b..898a2f6 100644 --- a/plugin.rb +++ b/plugin.rb @@ -170,15 +170,25 @@ def register_middleware(omniauth) omniauth.provider :salesforce, setup: lambda { |env| - strategy = env["omniauth.strategy"] - strategy.options[:client_id] = SiteSetting.salesforce_client_id - strategy.options[:client_secret] = SiteSetting.salesforce_client_secret - strategy.options[ - :redirect_uri - ] = "#{Discourse.base_url}/auth/salesforce/callback" - strategy.options[:client_options][ + opts = env["omniauth.strategy"].options + opts[:client_id] = SiteSetting.salesforce_client_id + opts[:client_secret] = SiteSetting.salesforce_client_secret + opts[:redirect_uri] = "#{Discourse.base_url}/auth/salesforce/callback" + opts[:client_options][ :site ] = SiteSetting.salesforce_authorization_server_url + opts[:client_options][:connection_build] = lambda do |builder| + if SiteSetting.salesforce_auth_verbose_logging + builder.response :logger, + Rails.logger, + { + bodies: true, + formatter: Auth::OauthFaradayFormatter, + } + end + builder.request :url_encoded + builder.adapter FinalDestination::FaradayAdapter + end } end