Class: DcPermission

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
app/models/dc_permission.rb

Overview

Schema information

Collection name: dc_permission : Collection permissions

_id                  BSON::ObjectId       _id
created_at           Time                 created_at
updated_at           Time                 updated_at
table_name           String               Permission is valid for collection
is_default           Mongoid::Boolean     This is default permission for all collections in database
active               Mongoid::Boolean     Permission is active
dc_policy_rules      Embedded:DcPolicyRule Defined policy rules

dc_permissions collection is used for saving documents which define permissions for accessing individual collections within DRG CMS system. Document which is marked as default is the top level document and defines general permissions valid for all collections. Other documents define permissions for accessing single collections or even embedded documents within collections.

Constant Summary collapse

NO_ACCESS =

User has no access

0
CAN_VIEW =

User can view documents

1
CAN_CREATE =

User can create new documents

2
CAN_EDIT =

User can edit his own documents

4
CAN_EDIT_ALL =

User can edit all documents in collection

8
CAN_DELETE =

User can delete his own documents

16
CAN_DELETE_ALL =

User can delete all documents in collection

32
CAN_ADMIN =

User can admin collection (same as can_delete_all, but can see documents which do not belong to current site)

64
SUPERADMIN =

User is superadmin. Basicly same as admin.

128

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.permissions_for(collection_name, result = {}) ⇒ Object



118
119
120
121
122
123
124
125
126
# File 'app/models/dc_permission.rb', line 118

def self.permissions_for(collection_name, result = {}) #:nodoc:
  permissions = if collection_name == '*'
    self.find_by(is_default: true)
  else
    self.find_by(table_name: collection_name, active: true)
  end
  permissions.dc_policy_rules.each {|perm| result[perm.dc_policy_role_id] = perm.permission } if permissions
  result
end

.permissions_for_table(collection_name) ⇒ Object

Will return permissions for collection



101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/models/dc_permission.rb', line 101

def self.permissions_for_table(collection_name)
  if collection_name.match(';')
    collection, embedded, rest = collection_name.split(';')
  else
    collection, embedded = collection_name, nil
  end
  result = permissions_for('*')
  result = permissions_for("#{collection[0,3]}*", result)
  result = permissions_for(collection, result)
  # include permissions for embedded documents
  result = permissions_for("#{collection};#{embedded}", result) if embedded
  result
end

.values_for_permissionsObject

Will return choices for permissions prepared for usega in select input field. This will return english only comments so it is not used.



94
95
96
# File 'app/models/dc_permission.rb', line 94

def self.values_for_permissions #:nodoc:
  [['NO_ACCESS',0],['CAN_VIEW',1],['CAN_CREATE',2],['CAN_EDIT',4],['CAN_EDIT_ALL',8],['CAN_DELETE',16],['CAN_DELETE_ALL',32],['CAN_ADMIN',64],['SUPERADMIN',128]]
end

Instance Method Details

#cache_clearObject

Clear cache if cache is configured



86
87
88
# File 'app/models/dc_permission.rb', line 86

def cache_clear
  DrgCms.cache_clear(:dc_permission)
end