class Drillbit::Authorizers::Parameters::Filtering

Public Instance Methods

call() click to toggle source
# File lib/drillbit/authorizers/parameters/filtering.rb, line 9
def call
  params.permit(*authorized_params)
end

Private Instance Methods

add_filter_override(name:, value:, only_when_present: false, override_if_admin: false) click to toggle source
# File lib/drillbit/authorizers/parameters/filtering.rb, line 56
def add_filter_override(name:,
                        value:,
                        only_when_present: false,
                        override_if_admin: false)

  add_filterable_parameter name

  return true if !override_if_admin && token.admin?

  param = params
            .fetch(:filter, {})
            .fetch(name,    nil)

  return if !param && only_when_present

  params[:filter] ||= {}

  params[:filter][name] = value
end
add_filterable_parameter(name) click to toggle source
# File lib/drillbit/authorizers/parameters/filtering.rb, line 38
def add_filterable_parameter(name)
  param = params
            .fetch(:filter, {})
            .fetch(name,    nil)

  if param.class == Array
    authorized_params[7][:filter][1][name] = []
  else
    authorized_params[7][:filter] << name
  end
end
add_filterable_parameters(*names) click to toggle source
# File lib/drillbit/authorizers/parameters/filtering.rb, line 50
def add_filterable_parameters(*names)
  names.each do |name|
    add_filterable_parameter(name)
  end
end
authorized_params() click to toggle source
# File lib/drillbit/authorizers/parameters/filtering.rb, line 15
def authorized_params
  @authorized_params ||= [
                           :sort,
                           :token,
                           :token_b64,
                           :token_jwt,
                           :format,
                           :accept,
                           :include,
                           page:   %i{
                                     number
                                     size
                                     offset
                                     limit
                                     cursor
                                   },
                           filter: [
                                     :query,
                                     {},
                                   ],
                         ]
end