class GraphQL::Pundit::Instrumenters::Authorization::AuthorizationResolver
This does the actual Pundit
authorization
Attributes
current_user[R]
old_resolver[R]
options[R]
Public Class Methods
new(current_user, old_resolver, options)
click to toggle source
# File lib/graphql-pundit/instrumenters/authorization.rb, line 13 def initialize(current_user, old_resolver, options) @current_user = current_user @old_resolver = old_resolver @options = options end
Public Instance Methods
call(root, arguments, context)
click to toggle source
# File lib/graphql-pundit/instrumenters/authorization.rb, line 19 def call(root, arguments, context) unless authorize(root, arguments, context) raise ::Pundit::NotAuthorizedError end old_resolver.call(root, arguments, context) rescue ::Pundit::NotAuthorizedError if options[:raise] raise GraphQL::ExecutionError, "You're not authorized to do this" end end
Private Instance Methods
policy(record)
click to toggle source
# File lib/graphql-pundit/instrumenters/authorization.rb, line 46 def policy(record) options[:policy] || record end
query()
click to toggle source
# File lib/graphql-pundit/instrumenters/authorization.rb, line 42 def query @query ||= options[:query].to_s + '?' end
record(root, arguments, context)
click to toggle source
# File lib/graphql-pundit/instrumenters/authorization.rb, line 50 def record(root, arguments, context) if options[:record].respond_to?(:call) options[:record].call(root, arguments, context) else options[:record] || root end end