Module: GraphQL::Permissions::InterfacePermissions

Defined in:
lib/graphql/permissions/interface_permissions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#permissions_typeModule? (readonly)

Returns:

  • (Module, nil)


7
8
9
# File 'lib/graphql/permissions/interface_permissions.rb', line 7

def permissions_type
  @permissions_type
end

Instance Method Details

#included(klass) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/graphql/permissions/interface_permissions.rb', line 9

def included(klass)
  super

  klass.extend(GraphQL::Permissions::InterfacePermissions) unless klass.is_a?(Class)
  return unless klass.is_a?(Class) && klass < GraphQL::Schema::Object && permissions_type

  klass.permissions {} # rubocop:disable Lint/EmptyBlock
  klass.permissions_type.implements(permissions_type)
end

#interfaces_with_permissionsArray<Module>

Returns:

  • (Array<Module>)


20
21
22
# File 'lib/graphql/permissions/interface_permissions.rb', line 20

def interfaces_with_permissions
  interfaces.select { |interface| interface.respond_to?(:permissions_type) && interface.permissions_type }
end

#permissions(&block) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/graphql/permissions/interface_permissions.rb', line 24

def permissions(&block)
  unless permissions_type
    @permissions_type = create_permissions_type
    const_set(:PermissionsType, @permissions_type)

    implement_permissions_interfaces
    define_permissions_field
  end

  permissions_type.class_eval(&block)
end