Sha256: 9141db93fb0dbac6d232e93199323183b3e03424282a5f63948e2072a9104634

Contents?: true

Size: 929 Bytes

Versions: 1

Compression:

Stored size: 929 Bytes

Contents

# frozen_string_literal: true

module GraphqlAuthorize
  module FieldResolveStep
    # rubocop:disable Metrics/ParameterLists
    def call(_parent_type, parent_object, field_definition, field_args, context, _next = nil)
      if authorized?(field_definition, parent_object, field_args, context)
        super
      else
        GraphQL::ExecutionError.new("Access to the field '#{field_definition.name}' is denied!")
      end
    end
    # rubocop:enable Metrics/ParameterLists

    private

    def authorized?(field_definition, object, args, context)
      return true if field_definition.authorize.nil?

      if field_definition.authorize.is_a?(Proc)
        return field_definition.authorize.call(object, args, context)
      end

      return false if auth_adapter.nil?

      auth_adapter.new(field_definition, context).authorize
    end

    def auth_adapter
      GraphqlAuthorize.config.auth_adapter
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphql_authorize-0.3.0 lib/graphql_authorize/ext/field_resolve_step.rb