Module: RubyUIAdmin::Authorization

Defined in:
lib/ruby_ui_admin/authorization.rb,
lib/ruby_ui_admin/authorization/adapter.rb,
lib/ruby_ui_admin/authorization/pundit_adapter.rb,
lib/ruby_ui_admin/authorization/can_can_can_adapter.rb,
lib/ruby_ui_admin/authorization/action_policy_adapter.rb

Overview

Resolves the authorization adapter from config.authorization_client. The value may be a symbol (looked up in REGISTRY), a Class (a custom adapter), or nil (disabled — still resolves to the default adapter, which short-circuits to permissive via authorization_enabled?).

Defined Under Namespace

Classes: ActionPolicyAdapter, Adapter, CanCanCanAdapter, PunditAdapter

Constant Summary collapse

REGISTRY =

Symbol → adapter class, wrapped in a lambda so optional backends (Pundit, CanCanCan) are only referenced when actually selected.

{
  action_policy: -> { ActionPolicyAdapter },
  pundit: lambda {
    require "ruby_ui_admin/authorization/pundit_adapter"
    PunditAdapter
  },
  cancancan: lambda {
    require "ruby_ui_admin/authorization/can_can_can_adapter"
    CanCanCanAdapter
  }
}.freeze

Class Method Summary collapse

Class Method Details

.adapter_class(client = RubyUIAdmin.configuration.authorization_client) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ruby_ui_admin/authorization.rb', line 22

def self.adapter_class(client = RubyUIAdmin.configuration.authorization_client)
  return client if client.is_a?(Class)

  key = (client || :action_policy).to_sym
  resolver = REGISTRY[key]
  unless resolver
    known = REGISTRY.keys.join(", ")
    raise ArgumentError,
      "Unknown authorization_client #{client.inspect}. Use one of: #{known}, an adapter class, or nil."
  end

  resolver.call
end

.buildObject



36
37
38
# File 'lib/ruby_ui_admin/authorization.rb', line 36

def self.build(...)
  adapter_class.new(...)
end