31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'app/models/alberich/permission.rb', line 31
def update_derived_permissions
new_derived_permission_objects = permission_object.derived_subtree(role)
old_derived_permissions = derived_permissions
old_derived_permissions.each do |derived_perm|
if new_derived_permission_objects.delete(derived_perm.permission_object)
derived_perm.role = role
derived_perm.entity_id = entity_id
derived_perm.save!
else
derived_perm.destroy
end
end
new_derived_permission_objects.each do |perm_obj|
unless DerivedPermission.where(:permission_id => id,
:permission_object_id => perm_obj.id,
:permission_object_type =>
perm_obj.class.name).any?
derived_perm = DerivedPermission.new(:entity_id => entity_id,
:role_id => role_id,
:permission_object => perm_obj,
:permission => self)
derived_perm.save!
end
end
end
|