class Controlist::Permissions::OrderedPackage
Attributes
list_create[R]
list_delete[R]
list_read[R]
list_update[R]
permissions[R]
Public Class Methods
new(*permissions)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 8 def initialize(*permissions) permissions.compact! @list_create = {} @list_read = {} @list_update = {} @list_delete = {} @permissions = permissions @permissions.freeze # avoid bypassing add_permissions/remove_permissions add_permissions *permissions end
Public Instance Methods
add_permissions(*permissions)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 19 def add_permissions(*permissions) @permissions += permissions @permissions.freeze permissions.each do |permission| operations = permission.operations add @list_create, permission if operations.nil? || operations.include?(CREATE) add @list_read, permission if operations.nil? || operations.include?(READ) add @list_update, permission if operations.nil? || operations.include?(UPDATE) add @list_delete, permission if operations.nil? || operations.include?(DELETE) end end
has_permission(klass, operation)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 43 def has_permission(klass, operation) permission_list = instance_variable_get("@list_#{operation}") if permission_list && (permissions = permission_list[klass]) permissions.any?(&:is_allowed) end end
remove_permissions(*permissions)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 31 def remove_permissions(*permissions) @permissions -= permissions @permissions.freeze permissions.each do |permission| operations = permission.operations remove @list_create, permission if operations.nil? || operations.include?(CREATE) remove @list_read, permission if operations.nil? || operations.include?(READ) remove @list_update, permission if operations.nil? || operations.include?(UPDATE) remove @list_delete, permission if operations.nil? || operations.include?(DELETE) end end
Private Instance Methods
add(list, permission)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 52 def add(list, permission) (list[permission.klass] ||= []) << permission end
remove(list, permission)
click to toggle source
# File lib/controlist/permissions/ordered_package.rb, line 56 def remove(list, permission) (list[permission.klass] ||= []).delete permission end