Class: DecisionAgent::Auth::RbacAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/auth/rbac_adapter.rb

Overview

Base adapter interface for RBAC integration Users can extend this to integrate with any authentication/authorization system

Instance Method Summary collapse

Instance Method Details

#active?(user) ⇒ Boolean

Check if a user is active/enabled

Parameters:

  • user (Object)

    The user object from your auth system

Returns:

  • (Boolean)

    true if user is active, false otherwise



28
29
30
31
32
33
# File 'lib/decision_agent/auth/rbac_adapter.rb', line 28

def active?(user)
  return false unless user

  # Default implementation - can be overridden
  user.respond_to?(:active?) ? user.active? : true
end

#can?(user, permission, resource = nil) ⇒ Boolean

Check if a user has a specific permission

Parameters:

  • user (Object)

    The user object from your auth system

  • permission (Symbol, String)

    The permission to check

  • resource (Object, nil) (defaults to: nil)

    Optional resource for resource-level permissions

Returns:

  • (Boolean)

    true if user has permission, false otherwise

Raises:

  • (NotImplementedError)


13
14
15
# File 'lib/decision_agent/auth/rbac_adapter.rb', line 13

def can?(user, permission, resource = nil)
  raise NotImplementedError, "Subclasses must implement #can?"
end

#has_role?(user, role) ⇒ Boolean

Check if a user has a specific role

Parameters:

  • user (Object)

    The user object from your auth system

  • role (Symbol, String)

    The role to check

Returns:

  • (Boolean)

    true if user has role, false otherwise

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/decision_agent/auth/rbac_adapter.rb', line 21

def has_role?(user, role)
  raise NotImplementedError, "Subclasses must implement #has_role?"
end

#user_email(user) ⇒ String?

Get user email for display/logging purposes

Parameters:

  • user (Object)

    The user object from your auth system

Returns:

  • (String, nil)

    User email



47
48
49
50
51
# File 'lib/decision_agent/auth/rbac_adapter.rb', line 47

def user_email(user)
  return nil unless user

  user.respond_to?(:email) ? user.email : nil
end

#user_id(user) ⇒ String, Integer

Get user ID for audit/logging purposes

Parameters:

  • user (Object)

    The user object from your auth system

Returns:

  • (String, Integer)

    User identifier



38
39
40
41
42
# File 'lib/decision_agent/auth/rbac_adapter.rb', line 38

def user_id(user)
  return nil unless user

  user.respond_to?(:id) ? user.id : user.to_s
end