Class: GraphQL::Schema::Field::ScopeExtension

Inherits:
GraphQL::Schema::FieldExtension show all
Defined in:
lib/graphql/schema/field/scope_extension.rb

Instance Attribute Summary

Attributes inherited from GraphQL::Schema::FieldExtension

#added_default_arguments, #added_extras, #field, #options

Instance Method Summary collapse

Methods inherited from GraphQL::Schema::FieldExtension

#after_define, #after_define_apply, #apply, default_argument, default_argument_configurations, extras, #initialize, #resolve

Constructor Details

This class inherits a constructor from GraphQL::Schema::FieldExtension

Instance Method Details

#after_resolve(object:, arguments:, context:, value:, memo:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/graphql/schema/field/scope_extension.rb', line 7

def after_resolve(object:, arguments:, context:, value:, memo:)
  if value.nil?
    value
  else
    ret_type = @field.type.unwrap
    if ret_type.respond_to?(:scope_items)
      scoped_items = ret_type.scope_items(value, context)
      if !scoped_items.equal?(value) && !ret_type.reauthorize_scoped_objects
        current_runtime_state = Thread.current[:__graphql_runtime_info]
        query_runtime_state = current_runtime_state[context.query]
        query_runtime_state.was_authorized_by_scope_items = true
      end
      scoped_items
    else
      value
    end
  end
end