Class: ActiveadminMcp::Authorization

Inherits:
Object
  • Object
show all
Defined in:
lib/activeadmin_mcp/authorization.rb

Overview

Applies a resource's ActiveAdmin authorization adapter to MCP tool calls, so reads, listings and writes obey the same rules as the admin UI.

ActiveAdmin's default adapter authorizes every action and returns collections unchanged, so applications without an authorization adapter are unaffected. Applications that configure one (CanCanCan via cancan_ability_class, Pundit, a custom adapter, ...) get their policy enforced on every path.

Constant Summary collapse

READ =
:read

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter) ⇒ Authorization

Returns a new instance of Authorization.



20
21
22
# File 'lib/activeadmin_mcp/authorization.rb', line 20

def initialize(adapter)
  @adapter = adapter
end

Class Method Details

.for(config, current_user) ⇒ Object



14
15
16
17
18
# File 'lib/activeadmin_mcp/authorization.rb', line 14

def self.for(config, current_user)
  adapter_class = config.namespace.authorization_adapter
  adapter_class = adapter_class.constantize if adapter_class.is_a?(String)
  new(adapter_class.new(config, current_user))
end

Instance Method Details

#authorized?(action, subject) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/activeadmin_mcp/authorization.rb', line 24

def authorized?(action, subject)
  @adapter.authorized?(action, subject)
end

#scope_collection(collection, action = READ) ⇒ Object



28
29
30
# File 'lib/activeadmin_mcp/authorization.rb', line 28

def scope_collection(collection, action = READ)
  @adapter.scope_collection(collection, action)
end