Class: Access::User

Inherits:
Object
  • Object
show all
Includes:
Savable
Defined in:
lib/access/user.rb

Overview

Access::User Use nil-oid if you don’t want the object to be stored.

Defined Under Namespace

Modules: Base

Instance Attribute Summary collapse

Attributes included from Savable

#access, #base

Instance Method Summary collapse

Methods included from Savable

#delete, #save

Constructor Details

#initialize(access, base, oid, credentials, meta = nil, admin = false, other = {}) ⇒ User

access: the access-instance the user is tied to (necessary for storing) oid: a string/integer, identifying the user credentials: (if not subclassed) a string authenticating the user, will be hashed before storing. meta: meta data about the user admin: admin’s have all privileges granted



85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/access/user.rb', line 85

def initialize(access, base, oid, credentials, meta=nil, admin=false, other={})
  @access      = access
  @base        = base
  @oid         = oid
  @credentials = credentials
  @admin       = admin
  @active      = other.has_key?(:active) ? other[:active] : false
  @meta        = meta
  @roles       = RoleList.new(self, other[:roles])
  @privileges  = PrivilegeList.new(self, other[:privileges])
  @logged      = false

  extend(Admin) if @admin
end

Instance Attribute Details

#credentialsObject

The credentials of the user (password)



55
56
57
# File 'lib/access/user.rb', line 55

def credentials
  @credentials
end

#metaObject

Metadata - anything you want



64
65
66
# File 'lib/access/user.rb', line 64

def meta
  @meta
end

#oidObject (readonly)

The record-id



52
53
54
# File 'lib/access/user.rb', line 52

def oid
  @oid
end

#privilegesObject (readonly)

Privileges of the user (Privileges instance)



58
59
60
# File 'lib/access/user.rb', line 58

def privileges
  @privileges
end

#rolesObject (readonly)

Roles the user is in (Roles instance)



61
62
63
# File 'lib/access/user.rb', line 61

def roles
  @roles
end

Instance Method Details

#activateObject

Activate a user



139
140
141
142
# File 'lib/access/user.rb', line 139

def activate
  @active = true
  save
end

#active=(value) ⇒ Object

Set active state to value



151
152
153
154
# File 'lib/access/user.rb', line 151

def active=(value)
  @active = value
  save
end

#active?Boolean

Check if user is activated (deactivated users have no privileges)

Returns:

  • (Boolean)


129
130
131
# File 'lib/access/user.rb', line 129

def active?
  @active
end

#admin?Boolean

Check if user is admin

Returns:

  • (Boolean)


124
125
126
# File 'lib/access/user.rb', line 124

def admin?
  false
end

#authorized?(*args) ⇒ Boolean

Same as privileged? but also takes active? and logged? into consideration. I.e. if a user is inactive or not logged in, he is not authorized for anything.

Returns:

  • (Boolean)


119
120
121
# File 'lib/access/user.rb', line 119

def authorized?(*args)
  @active && @logged && privileged?(*args)
end

#deactivateObject

Deactivate a user (deactivated users have no privileges)



145
146
147
148
# File 'lib/access/user.rb', line 145

def deactivate
  @active = false
  save
end

#eql?(other) ⇒ Boolean Also known as: ==

:nodoc:

Returns:

  • (Boolean)


177
178
179
# File 'lib/access/user.rb', line 177

def eql?(other)
  self.class == other.class && @oid.eql?(other.oid)
end

#hashObject

:nodoc:



183
184
185
# File 'lib/access/user.rb', line 183

def hash
  @oid.hash
end

#inactive?Boolean

Check if user is deactivated (deactivated users have no privileges)

Returns:

  • (Boolean)


134
135
136
# File 'lib/access/user.rb', line 134

def inactive?
  !@active
end

#inspectObject

:nodoc:



188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/access/user.rb', line 188

def inspect
  "#<%s:0x%08x base: %s oid: %s credentials: %s %s%s%s>" %  [
    self.class,
    object_id << 1,
    "#{@base.class}(#{(class <<@base; self; end).ancestors.first})",
    @oid.inspect,
    @credentials,
    @active ? 'active' : 'inactive',
    admin? ? ' admin' : '',
    logged? ? ' logged' : ''
  ]
end

#logged=(value) ⇒ Object

Set the logged? status of the user



167
168
169
# File 'lib/access/user.rb', line 167

def logged=(value)
  @logged = !!value
end

#logged?Boolean

Whether the user is logged in or not

Returns:

  • (Boolean)


172
173
174
# File 'lib/access/user.rb', line 172

def logged?
  @logged
end

#loginObject

Set the logged? status of the user to true



157
158
159
# File 'lib/access/user.rb', line 157

def 
  @logged = true
end

#logoutObject

Set the logged? status of the user to false



162
163
164
# File 'lib/access/user.rb', line 162

def logout
  @logged = false
end

#privileged?(privilege, parameters = nil) ⇒ Boolean

Check if a user has sufficient privileges to be allowed for certain privilege with certain restriction parameters. WARNING! This method does not care about login- nor active-state. Use authorized? to do that

Returns:

  • (Boolean)


113
114
115
# File 'lib/access/user.rb', line 113

def privileged?(privilege, parameters=nil)
  @privileges.allow?(privilege, parameters) || @roles.allow?(privilege, parameters)
end

#storableObject

The data needed to restore a user. Simplified to hashes and scalar values.



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/access/user.rb', line 68

def storable
  {
    :oid         => @oid,
    :credentials => @credentials,
    :meta        => @meta,
    :admin       => @admin,
    :active      => @active,
    :privileges  => @privileges.storable,
    :roles       => @roles.storable,
  }
end