* More loading fixes * Go back to OpenStruct * Shuffle things around * Remove obsolete patches and unneeded requires * Disable config.add_autoload_paths_to_load_path * Fix pre-require errors * Config not reloader
45 lines
1.2 KiB
Ruby
45 lines
1.2 KiB
Ruby
module Authentication
|
|
module Providers
|
|
# Retrieves a provider that is both available and enabled
|
|
def self.get!(provider_name)
|
|
name = provider_name.to_s.titleize
|
|
|
|
unless available?(provider_name)
|
|
raise(
|
|
::Authentication::Errors::ProviderNotFound,
|
|
"Provider #{name} is not available!",
|
|
)
|
|
end
|
|
|
|
unless enabled?(provider_name)
|
|
raise(
|
|
::Authentication::Errors::ProviderNotEnabled,
|
|
"Provider #{name} is not enabled!",
|
|
)
|
|
end
|
|
|
|
Authentication::Providers.const_get(name)
|
|
end
|
|
|
|
def self.available
|
|
Authentication::Providers::Provider.subclasses.map do |subclass|
|
|
subclass.name.demodulize.downcase.to_sym
|
|
end.sort
|
|
end
|
|
|
|
def self.available?(provider_name)
|
|
Authentication::Providers.const_defined?(provider_name.to_s.titleize)
|
|
end
|
|
|
|
# Returns enabled providers
|
|
# TODO: [thepracticaldev/oss] ideally this should be "available - disabled"
|
|
# we can get there once we have feature flags
|
|
def self.enabled
|
|
SiteConfig.authentication_providers.map(&:to_sym).sort
|
|
end
|
|
|
|
def self.enabled?(provider_name)
|
|
enabled.include?(provider_name.to_sym)
|
|
end
|
|
end
|
|
end
|