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.) 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 |
.build ⇒ Object
36 37 38 |
# File 'lib/ruby_ui_admin/authorization.rb', line 36 def self.build(...) adapter_class.new(...) end |