Class: Reactor::Permission::PermissionProxy
- Inherits:
-
Object
- Object
- Reactor::Permission::PermissionProxy
- Defined in:
- lib/reactor/permission.rb
Overview
This class acts as a proxy to underlying permission checking classes. There are three possible cases for each permission type (live, read, write, root, create_children):
-
Given user is SuperUser - all permissions granted
-
Given user has the permission
-
Given user doesn’t have the permission
Instance Method Summary collapse
-
#clear(permission) ⇒ Object
Takes away the given
permissionfrom all groups currently set. -
#create_children?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘create_children’ permission.
- #delete?(user = nil) ⇒ Boolean
- #edit?(user = nil) ⇒ Boolean
-
#grant(permission, groups) ⇒ Object
Grants the given
groupsthe givenpermission, without effecting already existing groups. -
#initialize(obj) ⇒ PermissionProxy
constructor
:nodoc:.
-
#live?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘live’ permission.
-
#read?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘read’ permission.
-
#release?(user = nil) ⇒ Boolean
Returns true if given user has permissions required to release an object (the exact permissions depend on the state of the object).
- #revert?(user = nil) ⇒ Boolean
-
#revoke(permission, groups) ⇒ Object
Takes away the given
permissionfrom the givengroups, without effecting already existing groups. -
#root?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘root’ permission.
-
#set(permission, groups) ⇒ Object
Setter to overwrite the current groups for the given
permissionwith the givengroups. - #take?(user = nil) ⇒ Boolean
-
#write?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘write’ permission.
Constructor Details
#initialize(obj) ⇒ PermissionProxy
:nodoc:
115 116 117 118 119 |
# File 'lib/reactor/permission.rb', line 115 def initialize(obj) #:nodoc: @obj = obj @cache = Reactor::Cache::Permission.instance @lookup = PermissionLookup.new(obj) end |
Instance Method Details
#clear(permission) ⇒ Object
Takes away the given permission from all groups currently set.
206 207 208 209 210 |
# File 'lib/reactor/permission.rb', line 206 def clear() identifier = identifier() crul_obj.(identifier) end |
#create_children?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘create_children’ permission
142 143 144 |
# File 'lib/reactor/permission.rb', line 142 def create_children?(user = nil) granted?(user, :root) || granted?(user, :create_children) end |
#delete?(user = nil) ⇒ Boolean
147 148 149 |
# File 'lib/reactor/permission.rb', line 147 def delete?(user = nil) root?(user) end |
#edit?(user = nil) ⇒ Boolean
162 163 164 |
# File 'lib/reactor/permission.rb', line 162 def edit?(user = nil) write?(user) end |
#grant(permission, groups) ⇒ Object
Grants the given groups the given permission, without effecting already existing groups.
189 190 191 192 193 194 |
# File 'lib/reactor/permission.rb', line 189 def grant(, groups) identifier = identifier() groups = [groups] if groups.kind_of?(::String) crul_obj.(identifier, groups) end |
#live?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘live’ permission
122 123 124 |
# File 'lib/reactor/permission.rb', line 122 def live?(user=nil) granted?(user, :live) end |
#read?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘read’ permission
127 128 129 |
# File 'lib/reactor/permission.rb', line 127 def read?(user = nil) granted?(user, :root) || granted?(user, :read) end |
#release?(user = nil) ⇒ Boolean
Returns true if given user has permissions required to release an object (the exact permissions depend on the state of the object)
168 169 170 171 172 173 174 175 176 |
# File 'lib/reactor/permission.rb', line 168 def release?(user = nil) if !has_workflow? # NOTE: order matters for speed write?(user) || root?(user) else # this is slow root?(user) || (has_workflow_api? && obj.workflow.release?) end end |
#revert?(user = nil) ⇒ Boolean
157 158 159 |
# File 'lib/reactor/permission.rb', line 157 def revert?(user = nil) write?(user) end |
#revoke(permission, groups) ⇒ Object
Takes away the given permission from the given groups, without effecting already existing groups.
198 199 200 201 202 203 |
# File 'lib/reactor/permission.rb', line 198 def revoke(, groups) identifier = identifier() groups = [groups] if groups.kind_of?(::String) crul_obj.(identifier, groups) end |
#root?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘root’ permission
137 138 139 |
# File 'lib/reactor/permission.rb', line 137 def root?(user = nil) granted?(user, :root) end |
#set(permission, groups) ⇒ Object
Setter to overwrite the current groups for the given permission with the given groups.
180 181 182 183 184 185 |
# File 'lib/reactor/permission.rb', line 180 def set(, groups) identifier = identifier() groups = [groups] if groups.kind_of?(::String) crul_obj.(identifier, groups) end |
#take?(user = nil) ⇒ Boolean
152 153 154 |
# File 'lib/reactor/permission.rb', line 152 def take?(user = nil) write?(user) end |
#write?(user = nil) ⇒ Boolean
Returns true if given user (or current user, if none given) has ‘write’ permission
132 133 134 |
# File 'lib/reactor/permission.rb', line 132 def write?(user = nil) granted?(user, :root) || granted?(user, :write) end |