module Critic::Policy
Represents the authorization policy interface
Attributes
errors[R]
resource[R]
subject[R]
Public Class Methods
for(resource)
click to toggle source
# File lib/critic/policy.rb, line 22 def self.for(resource) resource_class = resource_class_for(resource) policies.fetch(resource_class) { "#{resource_class}Policy".constantize } end
new(subject, resource)
click to toggle source
# File lib/critic/policy.rb, line 43 def initialize(subject, resource) @subject = subject @resource = resource @errors = [] end
policies()
click to toggle source
# File lib/critic/policy.rb, line 6 def self.policies @_policies ||= Hash.new { |h, k| h[k.to_s] = nil } end
resource_class_for(object)
click to toggle source
@fixme do we really wish to demodulize ?
# File lib/critic/policy.rb, line 11 def self.resource_class_for(object) if object.respond_to?(:model_name) # used for pulling class out of ActiveRecord::Relation objects object.model_name elsif object.is_a?(Class) object.to_s.demodulize else object.class.to_s.demodulize end end
Public Instance Methods
Protected Instance Methods
failure_message(action)
click to toggle source
# File lib/critic/policy.rb, line 80 def failure_message(action) "#{subject} is not authorized to #{action} #{resource}" end
halt(*response)
click to toggle source
# File lib/critic/policy.rb, line 84 def halt(*response) throw :halt, *response end