class ActionPolicy::GraphQL::AuthorizedField::PreauthorizeExtension

Public Instance Methods

apply() click to toggle source
# File lib/action_policy/graphql/authorized_field.rb, line 61
def apply
  if options[:with].nil?
    raise ArgumentError, "You must specify the policy for preauthorization: " \
                         "`field :#{field.name}, preauthorize: {with: SomePolicy}`"
  end

  @to = extract_option(:to) do
    if field.type.list?
      ::ActionPolicy::GraphQL.default_preauthorize_list_rule
    else
      ::ActionPolicy::GraphQL.default_preauthorize_node_rule
    end
  end

  @raise = extract_option(:raise) do
    if field.mutation
      ::ActionPolicy::GraphQL.preauthorize_mutation_raise_exception
    else
      ::ActionPolicy::GraphQL.preauthorize_raise_exception
    end
  end
end
resolve(context:, object:, arguments:, **_rest) { |object, arguments| ... } click to toggle source
# File lib/action_policy/graphql/authorized_field.rb, line 84
def resolve(context:, object:, arguments:, **_rest)
  if @raise
    object.authorize! field.name, to: @to, **options
    yield object, arguments
  elsif object.allowed_to?(@to, field.name, **options)
    yield object, arguments
  end
end