Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/code0/identities.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@
module Code0
module Identities
class Error < StandardError; end
class MissingConfigurationError < Error; end
class InvalidConfigurationError < Error; end
end
end
6 changes: 3 additions & 3 deletions lib/code0/identities/identity_provider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ def load_identity(provider_id, params)
raise Error, "Provider with id '#{provider_id}' is not configured, did you forget to use add_provider"
end

provider.load_identity(params)
provider.load_identity(**params)
end

def [](provider_id)
providers[provider_id]
def self.for_type(provider_type)
Identities::Provider.const_get(provider_type.capitalize)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/code0/identities/provider/base_oauth.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def initialize(config_loader)
@config_loader = config_loader
end

def config_attributes
def validate_config!
raise NotImplementedError
end

Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/discord.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Discord < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[redirect_uri client_id client_secret]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def token_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/github.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Github < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[redirect_uri client_id client_secret]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def token_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/gitlab.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Gitlab < BaseOauth
def config_attributes
{
required: %i[base_url client_id client_secret redirect_uri],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[base_url redirect_uri client_id client_secret]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def base_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/google.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Google < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[redirect_uri client_id client_secret]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def base_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/microsoft.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Microsoft < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[redirect_uri client_id client_secret]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def base_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/oidc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ module Code0
module Identities
module Provider
class Oidc < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri token_url user_details_url authorization_url],
optional: %i[provider_name]
}
def validate_config!
required_keys = %i[client_id client_secret redirect_uri token_url user_details_url authorization_url]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - required_keys - [:provider_name]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def token_url
Expand Down
13 changes: 8 additions & 5 deletions lib/code0/identities/provider/saml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ def initialize(config_loader)
@config_loader = config_loader
end

def config_attributes
{
required: %i[],
optional: %i[provider_name metadata_url settings response_settings attribute_statements]
}
def validate_config!
required_keys = config[:metadata_url].nil? ? %i[settings] : %i[metadata_url]

missing_keys = required_keys - config.keys
invalid_keys = config.keys - %i[provider_name metadata_url settings response_settings attribute_statements]

raise MissingConfigurationError, "Missing: #{missing_keys.inspect}" if missing_keys.any?
raise InvalidConfigurationError, "Invalid: #{invalid_keys.inspect}" if invalid_keys.any?
end

def authorization_url
Expand Down
2 changes: 2 additions & 0 deletions sig/code0/identities.rbs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
module Code0
module Identities
class Error < StandardError end
class MissingConfigurationError < Error end
class InvalidConfigurationError < Error end
end
end
4 changes: 2 additions & 2 deletions sig/code0/identities/identity_provider.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
module Code0
module Identities
class IdentityProvider
def self.for_type: -> Class

attr_reader providers: Hash[Symbol, Provider::BaseOauth]

def initialize: () -> void

def []: (Symbol) -> Provider::BaseOauth

def add_provider: (provider_type: Symbol, config: Proc | Hash[Symbol, any]) -> void

def add_named_provider: (provider_id: Symbol, provider_type: Symbol, config: Proc | Hash[Symbol, any]) -> void
Expand Down
2 changes: 1 addition & 1 deletion sig/code0/identities/provider/base_oauth.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module Code0

def authorization_url: () -> String

def config_attributes: -> { optional: Array[Symbol], required: Array[Symbol] }
def validate_config!: -> void

def token_url: () -> String

Expand Down
2 changes: 1 addition & 1 deletion sig/code0/identities/provider/saml.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module Code0
class Saml
def authorization_url: () -> String

def config_attributes: -> { optional: Array[Symbol], required: Array[Symbol] }
def validate_config!: -> void

def load_identity: (Hash[Symbol, any]) -> Identity
end
Expand Down