module Ditty::Services::Authentication

Public Class Methods

[](key) click to toggle source
# File lib/ditty/services/authentication.rb, line 20
def [](key)
  config[key]
end
config() click to toggle source
# File lib/ditty/services/authentication.rb, line 48
def config
  @config ||= default.merge(::Ditty::Services::Settings.values(:authentication) || {})
end
default() click to toggle source
# File lib/ditty/services/authentication.rb, line 57
def default
  require 'ditty/models/identity'
  require 'ditty/controllers/auth_controller'
  {
    identity: {
      available: true,
      arguments: [
        {
          fields: [:username],
          model: ::Ditty::Identity,
          on_login: ::Ditty::AuthController,
          on_registration: ::Ditty::AuthController,
          locate_conditions: ->(req) { { username: req['username'] } }
        }
      ]
    }
  }
end
providers() click to toggle source
# File lib/ditty/services/authentication.rb, line 24
def providers
  config.compact.keys.select { |e| config[e][:available] && config[e][:enabled] != false }
end
provides?(provider) click to toggle source
# File lib/ditty/services/authentication.rb, line 52
def provides?(provider)
  provider = provider.to_sym
  providers.include?(provider) && config[provider][:available] && config.dig(provider, :enabled) != false
end
setup() click to toggle source
# File lib/ditty/services/authentication.rb, line 28
def setup
  config.compact.each_key do |provider|
    ::Ditty::Services::Logger.debug "Loading authentication provider #{provider}"
    req = if config.dig(provider, :require)
      [config[provider][:require]]
    else
      ["omniauth/#{provider}", "omniauth-#{provider}"]
    end
    req.find do |e|
      require e
      config[provider][:available] = true
      true
    rescue LoadError
      ::Ditty::Services::Logger.warn "Could not load authentication provider #{provider} using #{e}"
      config[provider][:available] = false
      false
    end
  end
end