mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-11-29 10:24:20 +01:00
35 lines
1.3 KiB
Ruby
35 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Provides methods for the configuration of authentication providers.
|
|
class AuthProviderService
|
|
class << self
|
|
def auto_configure(provider)
|
|
auto_configure_open_id_connect(provider) if provider.providable_type == OpenIdConnectProvider.name
|
|
end
|
|
|
|
private
|
|
|
|
def auto_configure_open_id_connect(provider)
|
|
raise NoMethodError unless provider.providable
|
|
|
|
require 'uri'
|
|
|
|
provider.providable.post_logout_redirect_uri = "#{ENV.fetch('DEFAULT_PROTOCOL')}://#{ENV.fetch('DEFAULT_HOST')}/sessions/sign_out"
|
|
provider.providable.client__redirect_uri =
|
|
"#{ENV.fetch('DEFAULT_PROTOCOL')}://#{ENV.fetch('DEFAULT_HOST')}/users/auth/#{provider.strategy_name}/callback"
|
|
provider.providable.display = 'page'
|
|
provider.providable.response_mode = 'query'
|
|
provider.providable.response_type = 'code'
|
|
provider.providable.uid_field = provider.auth_provider_mappings
|
|
.find { |m| m.local_model == 'user' && m.local_field == 'uid' }
|
|
&.api_field
|
|
|
|
URI.parse(provider.providable.issuer).tap do |uri|
|
|
provider.providable.client__scheme = uri.scheme
|
|
provider.providable.client__host = uri.host
|
|
provider.providable.client__port = uri.port
|
|
end
|
|
end
|
|
end
|
|
end
|