module Spine::Authorisation::Context

Public Instance Methods

authorize(action, resource) click to toggle source
# File lib/spine/authorisation/context.rb, line 16
def authorize(action, resource)
  return false unless subject

  restriction = restricted?(action, resource)
  if restriction
    publish(:restricted, self, restriction, action, resource)
    false
  elsif !granted?(action, resource)
    publish(:denied, self, action, resource)
    false
  else
    publish(:granted, self, action, resource)
    true
  end
end
role() click to toggle source
# File lib/spine/authorisation/context.rb, line 12
def role
  raise NotImplementedError, 'Context requires role'
end
subject() click to toggle source
# File lib/spine/authorisation/context.rb, line 8
def subject
  raise NotImplementedError, 'Context requires subject'
end

Private Instance Methods

granted?(action, resource) click to toggle source
# File lib/spine/authorisation/context.rb, line 34
def granted?(action, resource)
  Authorisation.permissions.granted?(role, action, resource)
end
restricted?(action, resource) click to toggle source
# File lib/spine/authorisation/context.rb, line 38
def restricted?(action, resource)
  Authorisation.restrictions.restricted?(self, action, resource)
end