class GraphQL::Pundit::Instrumenters::Scope

Base instrumenter for `before_scope` and `after_scope`

Attributes

current_user[R]

Public Class Methods

new(current_user = :current_user) click to toggle source
# File lib/graphql-pundit/instrumenters/scope.rb, line 67
def initialize(current_user = :current_user)
  @current_user = current_user
end

Public Instance Methods

instrument(_type, field) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/graphql-pundit/instrumenters/scope.rb, line 72
def instrument(_type, field)
  # rubocop:enable Metrics/MethodLength
  scope_metadata = field.metadata[self.class::SCOPE_KEY]
  return field unless scope_metadata
  scope = scope_metadata[:proc]

  old_resolver = field.resolve_proc
  resolver = self.class::ScopeResolver.new(current_user,
                                           scope,
                                           old_resolver,
                                           field)

  field.redefine do
    resolve resolver
  end
end