Module: Soar::Authentication::Identity::Factory
- Defined in:
- lib/soar/authentication/identity/factory.rb
Class Method Summary collapse
- .create(directory_configurations: nil, authenticated_identifier: nil) ⇒ Soar::Authentication::Identity
- .get_directory(config) ⇒ Soar::Registry::Directory
- .get_provider(directory_configurations, authenticated_identifier) ⇒ Soar::Authentication::Identity::Provider
Class Method Details
.create(directory_configurations: nil, authenticated_identifier: nil) ⇒ Soar::Authentication::Identity
15 16 17 18 19 20 |
# File 'lib/soar/authentication/identity/factory.rb', line 15 def self.create(directory_configurations: nil, authenticated_identifier: nil) raise ArgumentError, 'Missing required directory configuration' if directory_configurations.nil? raise ArgumentError, 'Missing required authenticated identifier' if authenticated_identifier.nil? provider = get_provider(directory_configurations, authenticated_identifier) Soar::Authentication::Identity.new(provider) end |
.get_directory(config) ⇒ Soar::Registry::Directory
29 30 31 32 33 |
# File 'lib/soar/authentication/identity/factory.rb', line 29 def self.get_directory(config) provider_class = Object.const_get(config.fetch('provider')) provider = provider_class.new(config.fetch('config').symbolize_keys) Soar::Registry::Directory.new(provider) end |
.get_provider(directory_configurations, authenticated_identifier) ⇒ Soar::Authentication::Identity::Provider
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/soar/authentication/identity/factory.rb', line 40 def self.get_provider(directory_configurations, authenticated_identifier) case authenticated_identifier when /@hetzner.co.za\z/ Soar::Authentication::Identity::Provider::Staff.new({ directory: get_directory(directory_configurations.fetch('staff')), authenticated_identifier: authenticated_identifier }) when /D\d*$/ raise NotImplementedError, 'Domain identities require an implementation' when /^[CF]{0,1}\d*$/ raise NotImplementedError, 'Customer identities require an implementation' else raise Soar::Authentication::Identity::Error::UnknownIdentityError, 'Unknown identity' end end |