class Spine::Restrictions::Registration

Attributes

exceptions[R]
restriction[R]
restrictions[R]

Public Class Methods

new(restriction) click to toggle source
# File lib/spine/restrictions/registration.rb, line 6
def initialize(restriction)
  @restriction = restriction
  @exceptions = {}
  @restrictions = {}
end

Public Instance Methods

applies?(action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 22
def applies?(action, resource)
  return false if exception?(action, resource)

  includes?(restrictions, action, resource)
end
except(action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 17
def except(action, resource)
  add(exceptions, action, resource)
  self
end
restrict(action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 12
def restrict(action, resource)
  add(restrictions, action, resource)
  self
end

Private Instance Methods

add(collection, action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 41
def add(collection, action, resource)
  collection[resource] ||= {}
  collection[resource][action] = true
end
exception?(action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 30
def exception?(action, resource)
  includes?(exceptions, action, resource)
end
includes?(collection, action, resource) click to toggle source
# File lib/spine/restrictions/registration.rb, line 34
def includes?(collection, action, resource)
  actions = collection[resource] || collection[:all]
  return false unless actions

  actions[action] || actions[:all]
end