class Apiphobic::Authorization::Authorizers::Parameters
Attributes
action[RW]
audience[RW]
ignored_attributes[W]
parameters[RW]
token[RW]
user[RW]
Public Class Methods
new(action:, token:, audience:, issuer:, parameters:, **other)
click to toggle source
rubocop:disable Metrics/ParameterLists
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 27 def initialize(action:, token:, audience:, issuer:, parameters:, **other) self.action = action self.audience = audience self.parameters = parameters.deep_dup self.token = token other.each do |name, value| public_send("#{name}=", value) end end
Public Instance Methods
call()
click to toggle source
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 98 def call sliced_parameters = authorized_parameters.map { |v| v.is_a?(::Hash) ? v[:name] : v } parameters.slice!(*sliced_parameters) authorized_parameters.each do |parameter| parameter = { name: parameter } unless parameter.is_a?(::Hash) authorize_parameter(value: parameters[parameter], authorization_parameters: authorization, raw_parameters: parameters, **parameter) end authorized_attributes.each do |attribute| attribute = { name: attribute } unless attribute.is_a?(::Hash) authorize_attribute(**attribute) end ignored_attributes.each do |attribute| attribute = { name: attribute } unless attribute.is_a?(::Hash) ignore_attribute(**attribute) end authorized_filters.each do |filter| filter = { name: filter } unless filter.is_a?(::Hash) authorize_filter(**filter) end authorized_relationships.each do |name| name = { name: name } unless name.is_a?(::Hash) authorize_relationship(**name) end authorize_inclusions(names: authorized_inclusions) authorize_sorts(names: authorized_sorts) parameters.permit(*authorization) end
ignored_attributes()
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 93 def ignored_attributes @ignored_attributes || [] end
Private Instance Methods
ignore_attribute(name:)
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 250 def ignore_attribute(name:) key_match = ->(k, _v) { k.to_s == name.to_s } parameters[:data][:attributes] = raw_parameter_attributes.delete_if(&key_match) parameters[:data][:relationships] = raw_parameter_relationships.delete_if(&key_match) end
override_parameter(name:, value:, hash:, override:)
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 258 def override_parameter(name:, value:, hash:, override:) override = { with: nil, if_admin: false, if_absent: true, if_blank: true } .merge(override) return value unless override[:with] && (!token.admin? || override[:if_admin]) && (hash.has_key?(name) || override[:if_absent]) && (!hash.has_key?(name) || !value.nil? || override[:if_blank]) hash[name] = override[:with] override[:with] end
raw_parameter_attribute_value(name)
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 321 def raw_parameter_attribute_value(name) raw_parameter_attributes[name] end
raw_parameter_attributes()
click to toggle source
rubocop:disable Layout/ExtraSpacing
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 290 def raw_parameter_attributes @raw_parameter_attributes ||= begin parameters[:data] ||= {} parameters[:data][:attributes] ||= {} parameters[:data][:attributes] end end
raw_parameter_filter_value(name)
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 325 def raw_parameter_filter_value(name) raw_parameter_filters[name] end
raw_parameter_filters()
click to toggle source
rubocop:enable Layout/ExtraSpacing
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 300 def raw_parameter_filters @raw_parameter_filters ||= parameters[:filter] ||= {} end
raw_parameter_inclusions()
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 304 def raw_parameter_inclusions @raw_parameter_inclusions ||= parameters[:include] end
raw_parameter_relationship(name)
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 329 def raw_parameter_relationship(name) raw_parameter_relationships.fetch(name, {}) end
raw_parameter_relationship_data(name)
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 333 def raw_parameter_relationship_data(name) raw_parameter_relationship(name).fetch(:data, nil) end
raw_parameter_relationships()
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 308 def raw_parameter_relationships @raw_parameter_relationships ||= begin parameters[:data] ||= {} parameters[:data][:relationships] ||= {} parameters[:data][:relationships] end end
raw_parameter_sorts()
click to toggle source
# File lib/apiphobic/authorization/authorizers/parameters.rb, line 317 def raw_parameter_sorts @raw_parameter_sorts ||= parameters[:sort] end