Module: ActionPolicy::GraphQL::Fields::ClassMethods

Defined in:
lib/action_policy/graphql/fields.rb

Instance Method Summary collapse

Instance Method Details

#expose_authorization_rules(*rules, field_name: nil, prefix: ::ActionPolicy::GraphQL.default_authorization_field_prefix, field_options: {}, **options) ⇒ Object

Raises:

  • (ArgumentError)


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/action_policy/graphql/fields.rb', line 27

def expose_authorization_rules(*rules, field_name: nil, prefix: ::ActionPolicy::GraphQL.default_authorization_field_prefix, field_options: {}, **options)
  raise ArgumentError, "Cannot specify field_name for multiple rules" if rules.size > 1 && !field_name.nil?

  rules.each do |rule|
    gql_field_name = field_name || "#{prefix}#{rule.to_s.delete("?")}"

    field gql_field_name,
      ActionPolicy::GraphQL::Types::AuthorizationResult,
      null: false,
      **field_options

    define_method(gql_field_name) do
      allowance_to(rule, object, **options)
    end
  end
end