Class: ActiveAdmin::GraphQL::SchemaField
- Inherits:
-
GraphQL::Schema::Field
- Object
- GraphQL::Schema::Field
- ActiveAdmin::GraphQL::SchemaField
- Defined in:
- lib/active_admin/graphql/schema_field.rb
Overview
Subclass of GraphQL::Schema::Field for namespace Query / Mutation fields.
The visibility: keyword accepts an optional Hash of metadata forwarded to graphql_schema_visible (second argument) when GraphQL::Schema::Visibility is enabled. That hook runs from #visible?; it does not replace graphql-ruby’s visibility system—it composes with super like any custom Field class.
Instance Method Summary collapse
- #authorized?(object, args, ctx) ⇒ Boolean
-
#initialize(visibility: nil, authorize: nil, authorize_action: nil, **kwargs, &block) ⇒ SchemaField
constructor
A new instance of SchemaField.
- #visible?(ctx) ⇒ Boolean
Constructor Details
#initialize(visibility: nil, authorize: nil, authorize_action: nil, **kwargs, &block) ⇒ SchemaField
Returns a new instance of SchemaField.
12 13 14 15 16 17 |
# File 'lib/active_admin/graphql/schema_field.rb', line 12 def initialize(visibility: nil, authorize: nil, authorize_action: nil, **kwargs, &block) @visibility = visibility @authorize = @authorize_action = super(**kwargs, &block) end |
Instance Method Details
#authorized?(object, args, ctx) ⇒ Boolean
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/active_admin/graphql/schema_field.rb', line 30 def (object, args, ctx) return false unless super owner = self.owner aa_resource = owner.respond_to?(:activeadmin_graphql_resource) ? owner.activeadmin_graphql_resource : nil return true unless aa_resource enabled = if @authorize.nil? ctx[:namespace]&. != false else @authorize end return true unless enabled action = @authorize_action || ActiveAdmin::Authorization::READ !!ctx[:auth]&.(aa_resource, action, object) end |
#visible?(ctx) ⇒ Boolean
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/active_admin/graphql/schema_field.rb', line 19 def visible?(ctx) return false unless super return true unless @visibility hook = ctx[:namespace]&.graphql_schema_visible return true if hook.nil? !!hook.call(ctx, @visibility) end |