Module: GraphQL::Pundit::Authorization

Included in:
Field
Defined in:
lib/graphql-pundit/authorization.rb

Overview

Authorization methods to be included in the used Field class

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



9
10
11
# File 'lib/graphql-pundit/authorization.rb', line 9

def self.prepended(base)
  base.include(GraphQL::Pundit::Common)
end

Instance Method Details

#authorize(*args, record: nil, policy: nil) ⇒ Object



27
28
29
30
31
# File 'lib/graphql-pundit/authorization.rb', line 27

def authorize(*args, record: nil, policy: nil)
  @authorize = args[0] || true
  @record = record if record
  @policy = policy if policy
end

#authorize!(*args, record: nil, policy: nil) ⇒ Object



33
34
35
36
# File 'lib/graphql-pundit/authorization.rb', line 33

def authorize!(*args, record: nil, policy: nil)
  @do_raise = true
  authorize(*args, record: record, policy: policy)
end

#initialize(*args, authorize: nil, record: nil, policy: nil, **kwargs, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/graphql-pundit/authorization.rb', line 13

def initialize(*args,
               authorize: nil,
               record: nil,
               policy: nil,
               **kwargs, &block)
  # authorize! is not a valid variable name
  authorize_bang = kwargs.delete(:authorize!)
  @record = record if record
  @policy = policy if policy
  @authorize = authorize_bang || authorize
  @do_raise = !!authorize_bang
  super(*args, policy: policy, record: record, **kwargs, &block)
end

#resolve(obj, args, ctx) ⇒ Object Also known as: resolve_field



38
39
40
41
42
43
44
# File 'lib/graphql-pundit/authorization.rb', line 38

def resolve(obj, args, ctx)
  raise ::Pundit::NotAuthorizedError unless do_authorize(obj, args, ctx)

  super(obj, args, ctx)
rescue ::Pundit::NotAuthorizedError
  raise GraphQL::ExecutionError, "You're not authorized to do this" if @do_raise
end