lib/drillbit/authorizers/parameters/resource.rb in drillbit-1.1.0 vs lib/drillbit/authorizers/parameters/resource.rb in drillbit-2.0.0

- old
+ new

@@ -1,11 +1,70 @@ # frozen_string_literal: true require 'drillbit/authorizers/parameters' +# :reek:UnusedPrivateMethod module Drillbit module Authorizers class Parameters class Resource < Authorizers::Parameters + def call + params.permit(*authorized_params) + end + + private + + def authorized_params + @authorized_params ||= [ + data: [ + :type, + :id, + { + attributes: [ + {}, + ], + relationships: [ + {}, + ], + }, + ], + ] + end + + def add_authorized_attribute(name) + param = params.fetch(:data, {}). + fetch(:attributes, {}). + fetch(name, nil) + + if param.class == Array + authorized_params[0][:data][:attributes][0][name] = [] + else + authorized_params[0][:data][2][:attributes] << name + end + end + + def add_authorized_attributes(*names) + names.each do |name| + add_authorized_attribute(name) + end + end + + def add_authorized_relationship(name) + param = params.fetch(:data, {}). + fetch(:relationships, {}). + fetch(name, nil) + + if param.class == Array + authorized_params[0][:data][:relationships][0][name] = [] + else + authorized_params[0][:data][2][:relationships] << name + end + end + + def add_authorized_relationships(*names) + names.each do |name| + add_authorized_relationship(name) + end + end end end end end