code0-identities 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20ecab70d2db2123f9c85738ae2897a9426eda9b4c13c4a9f455ddbf1b9dc423
4
- data.tar.gz: 39c36eb33cf35810cf34a359c9ff1356afadfc1bb649bf597795d9aa5861fefc
3
+ metadata.gz: 4f1374d563a671d44a7aa4a8cb97cfb4a86b8a4270516c7d5e9920cee8dd1c6b
4
+ data.tar.gz: aa80cc94abf329c5ed1a00608b67818cf06f9b1377a1ebad810e50bfeb9a46c4
5
5
  SHA512:
6
- metadata.gz: d0b802ab7def3ecc76192bd7c9207c4d2030a0a01cfa47410b1fe4d69ba4847dd4f9fcd5ed17c135cc1737e9efd758d8dc6298640f3363af7db88449c0d8ee7d
7
- data.tar.gz: 546c6dc2d4b88510c3cfb4c2367395a11a1a2a11d76e013b95634ca892a092e2ee5b59421ff641a57a42bcfda586ab9a657c5f4f821703bb247b3edb84eadb5c
6
+ metadata.gz: 61fed5fc5d5b1465aad39993e839480c6447e91a92b87d58600f5f4c5d22fa3f9ea2744f65f131ef7c5383eaa4a4ebf5971cf581a43d182cd83c6780c7a1929c
7
+ data.tar.gz: 64127ed131c54178e734fbf5f02e2d24dc52f071f7405368d4567391e3383cdc3b5870fb11d8bd7cad6c2218c368c96e5070b566d6c57d12bfdd9c606f2282bc
@@ -24,11 +24,11 @@ module Code0
24
24
  raise Error, "Provider with id '#{provider_id}' is not configured, did you forget to use add_provider"
25
25
  end
26
26
 
27
- provider.load_identity(params)
27
+ provider.load_identity(**params)
28
28
  end
29
29
 
30
- def [](provider_id)
31
- providers[provider_id]
30
+ def self.for_type(provider_type)
31
+ Identities::Provider.const_get(provider_type.capitalize)
32
32
  end
33
33
  end
34
34
  end
@@ -10,7 +10,7 @@ module Code0
10
10
  @config_loader = config_loader
11
11
  end
12
12
 
13
- def config_attributes
13
+ def validate_config!
14
14
  raise NotImplementedError
15
15
  end
16
16
 
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Discord < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[client_id client_secret redirect_uri],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[redirect_uri client_id client_secret]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - [:provider_name]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def token_url
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Github < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[client_id client_secret redirect_uri],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[redirect_uri client_id client_secret]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - [:provider_name]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def token_url
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Gitlab < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[base_url client_id client_secret redirect_uri],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[base_url redirect_uri client_id client_secret]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - [:provider_name]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def base_url
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Google < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[client_id client_secret redirect_uri],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[redirect_uri client_id client_secret]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - [:provider_name]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def base_url
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Microsoft < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[client_id client_secret redirect_uri],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[redirect_uri client_id client_secret]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - [:provider_name]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def base_url
@@ -4,11 +4,14 @@ module Code0
4
4
  module Identities
5
5
  module Provider
6
6
  class Oidc < BaseOauth
7
- def config_attributes
8
- {
9
- required: %i[client_id client_secret redirect_uri token_url user_details_url authorization_url],
10
- optional: %i[provider_name]
11
- }
7
+ def validate_config!
8
+ required_keys = %i[client_id client_secret redirect_uri token_url user_details_url authorization_url]
9
+
10
+ missing_keys = required_keys - config.keys
11
+ invalid_keys = config.keys - required_keys - %i[provider_name attribute_statements]
12
+
13
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
14
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
12
15
  end
13
16
 
14
17
  def token_url
@@ -10,11 +10,14 @@ module Code0
10
10
  @config_loader = config_loader
11
11
  end
12
12
 
13
- def config_attributes
14
- {
15
- required: %i[],
16
- optional: %i[provider_name metadata_url settings response_settings attribute_statements]
17
- }
13
+ def validate_config!
14
+ required_keys = config[:metadata_url].nil? ? %i[settings] : %i[metadata_url]
15
+
16
+ missing_keys = required_keys - config.keys
17
+ invalid_keys = config.keys - %i[provider_name metadata_url settings response_settings attribute_statements]
18
+
19
+ raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
20
+ raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
18
21
  end
19
22
 
20
23
  def authorization_url
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Code0
4
4
  module Identities
5
- VERSION = "0.0.4"
5
+ VERSION = "0.0.6"
6
6
  end
7
7
  end
@@ -18,5 +18,7 @@ require_relative "identities/provider/saml"
18
18
  module Code0
19
19
  module Identities
20
20
  class Error < StandardError; end
21
+ class MissingConfigurationError < Error; end
22
+ class InvalidConfigurationError < Error; end
21
23
  end
22
24
  end
@@ -3,12 +3,12 @@
3
3
  module Code0
4
4
  module Identities
5
5
  class IdentityProvider
6
+ def self.for_type: -> Class
7
+
6
8
  attr_reader providers: Hash[Symbol, Provider::BaseOauth]
7
9
 
8
10
  def initialize: () -> void
9
11
 
10
- def []: (Symbol) -> Provider::BaseOauth
11
-
12
12
  def add_provider: (provider_type: Symbol, config: Proc | Hash[Symbol, any]) -> void
13
13
 
14
14
  def add_named_provider: (provider_id: Symbol, provider_type: Symbol, config: Proc | Hash[Symbol, any]) -> void
@@ -8,7 +8,7 @@ module Code0
8
8
 
9
9
  def authorization_url: () -> String
10
10
 
11
- def config_attributes: -> { optional: Array[Symbol], required: Array[Symbol] }
11
+ def validate_config!: -> void
12
12
 
13
13
  def token_url: () -> String
14
14
 
@@ -4,7 +4,7 @@ module Code0
4
4
  class Saml
5
5
  def authorization_url: () -> String
6
6
 
7
- def config_attributes: -> { optional: Array[Symbol], required: Array[Symbol] }
7
+ def validate_config!: -> void
8
8
 
9
9
  def load_identity: (Hash[Symbol, any]) -> Identity
10
10
  end
@@ -1,5 +1,7 @@
1
1
  module Code0
2
2
  module Identities
3
3
  class Error < StandardError end
4
+ class MissingConfigurationError < Error end
5
+ class InvalidConfigurationError < Error end
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code0-identities
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dario Pranjic