From cf981f044d1c09e82e8d16f956a819249332a9ac Mon Sep 17 00:00:00 2001 From: Ben Rexin Date: Wed, 22 Jan 2025 22:26:04 +0100 Subject: [PATCH] feat: allow different client credentials for omniauth google --- config/initializers/omniauth.rb | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index 7b7e6061..049df414 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -3,7 +3,23 @@ OmniAuth.config.logger = Rails.logger Rails.application.config.middleware.use OmniAuth::Builder do - provider :google_oauth2, ENV['GOOGLE_CONSUMER_KEY'], ENV['GOOGLE_CONSUMER_SECRET'], verify_iss: false + provider :google_oauth2, { + verify_iss: false, + setup: proc do |env| + host = env['SERVER_NAME'] + tld = host[/(.+\.)?(.+\..+)/, 2] + token = tld.delete('-').split('.').join('_').upcase + name = "OMNIAUTH_GOOGLE_#{token}" + + if env.has_key?("#{name}_KEY") && env.has_key?("#{name}_SECRET") + env['omniauth.strategy'].options[:client_id] = ENV["#{name}_KEY"] + env['omniauth.strategy'].options[:client_secret] = ENV["#{name}_SECRET"] + else + env['omniauth.strategy'].options[:client_id] = ENV['GOOGLE_CONSUMER_KEY'] + env['omniauth.strategy'].options[:client_secret] = ENV['GOOGLE_CONSUMER_SECRET'] + end + end + } provider :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_CONSUMER_SECRET'] provider :github, { setup: proc do |env|