Class: Scrivito::User
- Inherits:
-
Object
- Object
- Scrivito::User
- Defined in:
- lib/scrivito/user.rb
Constant Summary collapse
- VERBS =
Valid action verbs for the explicit rules.
[ :create, :delete, :invite_to, :publish, :read, :write, ].freeze
Class Method Summary collapse
-
.define(id) {|user| ... } ⇒ Object
Defines a new user.
-
.system_user ⇒ Scrivito::User
Returns an anonymous system user who can always create workspaces, can always read, write, publish, delete, and invite others to collaborate on any workspace.
Instance Method Summary collapse
-
#can_publish?(obj) ⇒ Boolean
Checks whether the User may publish changes to a specific Obj.
-
#restriction_messages_for(obj) ⇒ Array<String>
Checks whether the User may publish changes to an Obj and returns the message specified in a Scrivito::UserDefinition#restrict_obj_publish callback if they may not.
Class Method Details
.define(id) {|user| ... } ⇒ Object
Defines a new user.
64 65 66 67 |
# File 'lib/scrivito/user.rb', line 64 def define(id, &block) assert_valid_id(id) define_user(id, &block) end |
.system_user ⇒ Scrivito::User
Returns an anonymous system user who can always create workspaces, can always read, write, publish, delete, and invite others to collaborate on any workspace.
83 84 85 |
# File 'lib/scrivito/user.rb', line 83 def system_user define_user { |user| user.is_admin! } end |
Instance Method Details
#can_publish?(obj) ⇒ Boolean
Checks whether the User may publish changes to a specific Obj.
161 162 163 |
# File 'lib/scrivito/user.rb', line 161 def can_publish?(obj) (obj).empty? end |
#restriction_messages_for(obj) ⇒ Array<String>
Checks whether the User may publish changes to an Obj and returns the message specified in a Scrivito::UserDefinition#restrict_obj_publish callback if they may not. If the user may publish the CMS object, an empty array is returned.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/scrivito/user.rb', line 174 def (obj) assert_restrictions_applicable(obj) return [] if can_always?(:publish, :workspace) if obj.modification == Modification::EDITED base_revision_obj = obj.in_revision(obj.revision.workspace.base_revision) restriction_set.(obj) | restriction_set.(base_revision_obj) else restriction_set.(obj) end end |