Class: GraphQL::Pundit::Instrumenters::Scope

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql-pundit/instrumenters/scope.rb

Overview

Base instrumenter for before_scope and after_scope

Direct Known Subclasses

AfterScope, BeforeScope

Defined Under Namespace

Classes: ScopeResolver

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_user = :current_user) ⇒ Scope

Returns a new instance of Scope.



65
66
67
# File 'lib/graphql-pundit/instrumenters/scope.rb', line 65

def initialize(current_user = :current_user)
  @current_user = current_user
end

Instance Attribute Details

#current_userObject (readonly)

Returns the value of attribute current_user.



63
64
65
# File 'lib/graphql-pundit/instrumenters/scope.rb', line 63

def current_user
  @current_user
end

Instance Method Details

#instrument(_type, field) ⇒ Object

rubocop:disable Metrics/MethodLength



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/graphql-pundit/instrumenters/scope.rb', line 70

def instrument(_type, field)
  # rubocop:enable Metrics/MethodLength
   = field.[self.class::SCOPE_KEY]
  return field unless 

  scope = [:proc]

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

  field.redefine do
    resolve resolver
  end
end