Class: Alberich::BasePermissionObject

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
PermissionedObject
Defined in:
app/models/alberich/base_permission_object.rb

Constant Summary collapse

GENERAL_PERMISSION_SCOPE =
"general_permission_scope"

Class Method Summary collapse

Instance Method Summary collapse

Methods included from PermissionedObject

#assign_owner_roles, #derived_subtree, #has_privilege, included, #perm_ancestors, #update_derived_permissions_for_ancestors

Class Method Details

.additional_privilege_target_typesObject



25
26
27
# File 'app/models/alberich/base_permission_object.rb', line 25

def self.additional_privilege_target_types
  Alberich.permissioned_object_classes.collect {|x| Kernel.const_get(x)}
end

.general_permission_scopeObject



11
12
13
14
15
16
17
# File 'app/models/alberich/base_permission_object.rb', line 11

def self.general_permission_scope
  base_permission = self.find_by_name(GENERAL_PERMISSION_SCOPE)
  unless base_permission
    base_permission = self.create!(:name => GENERAL_PERMISSION_SCOPE)
  end
  base_permission
end

.global_admin_permission_countObject



29
30
31
32
33
# File 'app/models/alberich/base_permission_object.rb', line 29

def self.global_admin_permission_count
  self.general_permission_scope.permissions.includes(:role => :privileges).
    where("alberich_privileges.target_type" => "Alberich::BasePermissionObject",
          "alberich_privileges.action" => Privilege::PERM_SET).size
end

.is_global_admin_perm(permission) ⇒ Object



35
36
37
38
39
40
# File 'app/models/alberich/base_permission_object.rb', line 35

def self.is_global_admin_perm(permission)
  permission.role.privileges.where("alberich_privileges.target_type" =>
                                   "Alberich::BasePermissionObject",
                                   "alberich_privileges.action" =>
                                   Privilege::PERM_SET).size > 0
end

Instance Method Details

#permissions_for_type(obj_type) ⇒ Object



19
20
21
22
23
# File 'app/models/alberich/base_permission_object.rb', line 19

def permissions_for_type(obj_type)
  role_ids = Role.where(:scope => "BasePermissionObject").
    select { |role| role.privilege_target_match(obj_type)}.collect {|r| r.id}
  permissions.where("role_id in (:role_ids)", {:role_ids => role_ids})
end