Class: Shamu::Security::Principal

Inherits:
Object
  • Object
show all
Defined in:
lib/shamu/security/principal.rb

Overview

...

Direct Known Subclasses

DelegatePrincipal

Attributes collapse

Instance Method Summary collapse

Constructor Details

#initialize(user_id: nil, parent_principal: nil, remote_ip: nil, elevated: false) ⇒ Principal



34
35
36
37
38
39
# File 'lib/shamu/security/principal.rb', line 34

def initialize( user_id: nil, parent_principal: nil, remote_ip: nil, elevated: false )
  @user_id          = user_id
  @parent_principal = parent_principal
  @remote_ip        = remote_ip
  @elevated         = elevated
end

Instance Attribute Details

#elevatedBoolean Also known as: elevated?



28
29
30
# File 'lib/shamu/security/principal.rb', line 28

def elevated
  @elevated
end

#parent_principalPrincipal



19
20
21
# File 'lib/shamu/security/principal.rb', line 19

def parent_principal
  @parent_principal
end

#remote_ipString



23
24
25
# File 'lib/shamu/security/principal.rb', line 23

def remote_ip
  @remote_ip
end

#user_idObject



14
15
16
# File 'lib/shamu/security/principal.rb', line 14

def user_id
  @user_id
end

Instance Method Details

#impersonate(user_id) ⇒ Principal

Create a new impersonation Shamu::Security::Principal, cloning relevant principal to the new instance.



66
67
68
# File 'lib/shamu/security/principal.rb', line 66

def impersonate( user_id )
  self.class.new( user_id: user_id, parent_principal: self, remote_ip: remote_ip, elevated: elevated )
end

#impersonated?Boolean



57
58
59
# File 'lib/shamu/security/principal.rb', line 57

def impersonated?
  !!parent_principal
end

#service_delegate?Boolean



73
74
# File 'lib/shamu/security/principal.rb', line 73

def service_delegate?
end

#user_id_chainArray<Object>



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/shamu/security/principal.rb', line 43

def user_id_chain
  @user_ids ||= begin
    user_ids = []
    principal = self
    while principal
      user_ids << principal.user_id
      principal = principal.parent_principal
    end

    user_ids.reverse
  end
end