class ViewModel::AccessControl::Composed

def detect_veto(env, checkers)

def detect_veto(env, checkers)
  checkers.each do |checker|
    result = checker.check(env)
    next unless result
    error =
      if result.is_a?(StandardError)
        result
      else
        checker.error_type.new('Action not permitted because: ' +
                               checker.reason,
                               env.view.blame_reference)
      end
    # short-circuit exit with failure
    return true, error
  end
  return false, nil
end