Class: Usps::Support::Policy::AdminContext

Inherits:
Object
  • Object
show all
Defined in:
app/models/usps/support/policy/admin_context.rb

Overview

Pundit user context that carries both the current user and any active impersonation session, so policies can distinguish the acting admin from the impersonated member.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, impersonate) ⇒ AdminContext

Returns a new instance of AdminContext.



10
11
12
13
# File 'app/models/usps/support/policy/admin_context.rb', line 10

def initialize(user, impersonate)
  @user = user
  @impersonate = impersonate
end

Instance Attribute Details

#impersonateObject (readonly)

Returns the value of attribute impersonate.



8
9
10
# File 'app/models/usps/support/policy/admin_context.rb', line 8

def impersonate
  @impersonate
end

#userObject (readonly)

Returns the value of attribute user.



8
9
10
# File 'app/models/usps/support/policy/admin_context.rb', line 8

def user
  @user
end

Instance Method Details

#admin?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'app/models/usps/support/policy/admin_context.rb', line 15

def admin?
  (impersonate&.fetch('impersonated', nil).present? ? original : user).admin?
end