module Pragma::Macro::Policy
Public Class Methods
for(input, name, options, action = nil)
click to toggle source
# File lib/pragma/macro/policy.rb, line 12 def for(input, name, options, action = nil) klass = Macro.require_skill('Policy', "policy.#{name}.class", options) policy = klass.new( options['policy.context'] || options['current_user'], options['model'] ) action_name = action.is_a?(Proc) ? action.call(options) : action action_name ||= input.class.operation_name options["result.policy.#{name}"] = Trailblazer::Operation::Result.new( policy.send("#{action_name}?"), 'policy' => policy ) unless options["result.policy.#{name}"].success? handle_unauthorized!(options) return false end true end