Module: Panda::Core::Engine::OmniauthConfig
- Extended by:
- ActiveSupport::Concern
- Included in:
- Panda::Core::Engine
- Defined in:
- lib/panda/core/engine/omniauth_config.rb
Constant Summary collapse
- PROVIDER_REGISTRY =
{ # Microsoft "microsoft" => :microsoft_graph, "microsoft_graph" => :microsoft_graph, # Google "google" => :google_oauth2, "google_oauth2" => :google_oauth2, "gmail" => :google_oauth2, # GitHub "github" => :github, "gh" => :github, # Developer "developer" => :developer }.freeze
Instance Method Summary collapse
-
#configure_provider(builder, name, settings) ⇒ Object
Configure a single provider on the OmniAuth builder.
-
#load_yaml_provider_overrides! ⇒ Object
deprecated
Deprecated.
Use class method load_yaml_provider_overrides_early! instead
Instance Method Details
#configure_provider(builder, name, settings) ⇒ Object
Configure a single provider on the OmniAuth builder
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/panda/core/engine/omniauth_config.rb', line 80 def configure_provider(builder, name, settings) symbol = PROVIDER_REGISTRY[name.to_s] unless symbol Rails.logger.warn("[panda-core] Unknown OmniAuth provider: #{name.inspect}") if defined?(Rails.logger) return end return if symbol == :developer && !Rails.env.development? # Skip providers without credentials (except developer which doesn't need them) has_credentials = settings[:client_id].present? && settings[:client_secret].present? if symbol != :developer && !has_credentials Rails.logger.info("[panda-core] Skipping OmniAuth provider #{name.inspect}: missing client_id or client_secret") if defined?(Rails.logger) return end = (settings[:options] || {}).dup [:name] = settings[:path_name] if settings[:path_name].present? if settings[:client_id] && settings[:client_secret] builder.provider symbol, settings[:client_id], settings[:client_secret], else builder.provider symbol, end end |
#load_yaml_provider_overrides! ⇒ Object
Deprecated.
Use class method load_yaml_provider_overrides_early! instead
Instance method for loading YAML provider overrides (for testing)
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/panda/core/engine/omniauth_config.rb', line 65 def load_yaml_provider_overrides! path = Panda::Core::Engine.root.join("config/providers.yml") return unless File.exist?(path) yaml = YAML.load_file(path) || {} (yaml["providers"] || {}).each do |name, settings| Panda::Core.config.authentication_providers[name.to_s] ||= {} Panda::Core.config.authentication_providers[name.to_s].deep_merge!(settings) end end |