module GraphQL::Pundit::Authorization
Authorization
methods to be included in the used Field
class
Public Class Methods
new(*args, authorize: nil, record: nil, policy: nil, **kwargs, &block)
click to toggle source
rubocop:disable Metrics/ParameterLists
Calls superclass method
# File lib/graphql-pundit/authorization.rb, line 14 def initialize(*args, authorize: nil, record: nil, policy: nil, **kwargs, &block) # rubocop:enable Metrics/ParameterLists # 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, **kwargs, &block) end
prepended(base)
click to toggle source
# File lib/graphql-pundit/authorization.rb, line 9 def self.prepended(base) base.include(GraphQL::Pundit::Common) end
Public Instance Methods
resolve_field(obj, args, ctx)
click to toggle source
Calls superclass method
# File lib/graphql-pundit/authorization.rb, line 39 def resolve_field(obj, args, ctx) raise ::Pundit::NotAuthorizedError unless do_authorize(obj, args, ctx) super(obj, args, ctx) rescue ::Pundit::NotAuthorizedError if @do_raise raise GraphQL::ExecutionError, "You're not authorized to do this" end end
Private Instance Methods
infer_policy(policy, record, arguments, context)
click to toggle source
# File lib/graphql-pundit/authorization.rb, line 78 def infer_policy(policy, record, arguments, context) # policy can be callable, nil (for inference) or a policy class if callable?(policy) policy.call(record, arguments, context) elsif policy.equal?(nil) infer_from = model?(record) ? record.model : record ::Pundit::PolicyFinder.new(infer_from).policy! else policy end end
infer_query(auth_value)
click to toggle source
# File lib/graphql-pundit/authorization.rb, line 61 def infer_query(auth_value) # authorize can be callable, true (for inference) or a policy query query = auth_value.equal?(true) ? method_sym : auth_value query.to_s + '?' end
infer_record(record, root, arguments, context)
click to toggle source
# File lib/graphql-pundit/authorization.rb, line 67 def infer_record(record, root, arguments, context) # record can be callable, nil (for inference) or just any other value if callable?(record) record.call(root, arguments, context) elsif record.equal?(nil) root else record end end