1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-10 21:24:20 +01:00
fab-manager/app/services/auth_provider_service.rb
2022-05-30 12:56:22 +02:00

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