class Spine::Permissions::Collection

Attributes

registered[R]

Public Class Methods

new() click to toggle source
# File lib/spine/permissions/collection.rb, line 4
def initialize
  @registered = { all: { all: default_permission } }
end

Public Instance Methods

default_permission() click to toggle source
# File lib/spine/permissions/collection.rb, line 31
def default_permission
  Deny
end
denied?(action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 22
def denied?(action, resource)
  permission(action, resource).denied?
end
deny(action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 13
def deny(action, resource)
  add(Deny, action, resource)
  self
end
grant(action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 8
def grant(action, resource)
  add(Grant, action, resource)
  self
end
granted?(action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 18
def granted?(action, resource)
  permission(action, resource).granted?
end
permission(action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 26
def permission(action, resource)
  resource_permission = registered[resource] || registered[:all]
  resource_permission[action] || resource_permission[:all]
end

Private Instance Methods

add(permission, action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 39
def add(permission, action, resource)
  if resource == :all
    add_to_all_resources(permission, action)
  elsif action == :all
    add_to_all_actions(permission, resource)
  else
    add_to_resource(permission, action, resource)
  end
end
add_to_all_actions(permission, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 56
def add_to_all_actions(permission, resource)
  permissions = registered[resource]
  permissions.keys.each do |action|
    permissions[action] = permission
  end
end
add_to_all_resources(permission, action) click to toggle source
# File lib/spine/permissions/collection.rb, line 49
def add_to_all_resources(permission, action)
  registered.keys.each do |resource|
    add_to_all_actions(permission, resource) if action == :all
    registered[resource][action] = permission
  end
end
add_to_resource(permission, action, resource) click to toggle source
# File lib/spine/permissions/collection.rb, line 63
def add_to_resource(permission, action, resource)
  registered[resource] ||= registered[:all].dup
  registered[resource][action] = permission
end