module ActionPolicy::GraphQL::Fields::ClassMethods

Public Instance Methods

expose_authorization_rules(*rules, field_name: nil, prefix: ::ActionPolicy::GraphQL.default_authorization_field_prefix, field_options: {}, **options) click to toggle source
# 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