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
4 changes: 4 additions & 0 deletions lib/code0/identities/identity_provider.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ def load_identity(provider_id, params)

provider.load_identity(params)
end

def [](provider_id)
providers[provider_id]
end
end
end
end
4 changes: 4 additions & 0 deletions lib/code0/identities/provider/base_oauth.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ def initialize(config_loader)
@config_loader = config_loader
end

def config_attributes
raise NotImplementedError
end

def authorization_url
raise NotImplementedError
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/discord.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ module Code0
module Identities
module Provider
class Discord < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
end

def token_url
"https://discord.com/api/oauth2/token"
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/github.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ module Code0
module Identities
module Provider
class Github < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
end

def token_url
"https://github.com/login/oauth/access_token"
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/gitlab.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ 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]
}
end

def base_url
config[:base_url]
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/google.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ module Code0
module Identities
module Provider
class Google < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
end

def base_url
"https://accounts.google.com"
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/microsoft.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ module Code0
module Identities
module Provider
class Microsoft < BaseOauth
def config_attributes
{
required: %i[client_id client_secret redirect_uri],
optional: %i[provider_name]
}
end

def base_url
"https://graph.microsoft.com/"
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/oidc.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ 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]
}
end

def token_url
config[:token_url]
end
Expand Down
7 changes: 7 additions & 0 deletions lib/code0/identities/provider/saml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,13 @@ 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]
}
end

def authorization_url
request = OneLogin::RubySaml::Authrequest.new
request.create(create_settings)
Expand Down
2 changes: 2 additions & 0 deletions sig/code0/identities/identity_provider.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ module Code0

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: 2 additions & 0 deletions sig/code0/identities/provider/base_oauth.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ module Code0

def authorization_url: () -> String

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

def token_url: () -> String

def user_details_url: () -> String
Expand Down
2 changes: 2 additions & 0 deletions sig/code0/identities/provider/saml.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ module Code0
class Saml
def authorization_url: () -> String

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

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