Class: Auth::Sanitizer::ValueSanitizer

Inherits:
Object
  • Object
show all
Defined in:
lib/auth/sanitizer/value_sanitizer.rb

Overview

Sanitizes arbitrary values using a configured {ThingFilter}.

Instance Method Summary collapse

Constructor Details

#initialize(filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label, **options) ⇒ ValueSanitizer

Returns a new instance of ValueSanitizer.

Parameters:

  • filtered_keys (Array<String>) (defaults to: Auth::Sanitizer.default_filtered_keys) —

    Sensitive key names

  • label (String) (defaults to: Auth::Sanitizer.filtered_label) —

    Replacement label



9
10
11
# File 'lib/auth/sanitizer/value_sanitizer.rb', line 9

def initialize(filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label, **options)
  @thing_filter = ThingFilter.new(filtered_keys, label: label)
end

Instance Method Details

#sanitize(value) ⇒ Object

Return a sanitized copy. Matching Hash keys are replaced as well as
their values, so a secret used as a key cannot leak through inspect.

Parameters:

  • value (Object) —

    Value to sanitize

Returns:

  • (Object)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/auth/sanitizer/value_sanitizer.rb', line 18

def sanitize(value)
  case value
  when Hash
    value.each_with_object({}) do |(key, nested), sanitized|
      sanitized_key = sanitize(key)
      sanitized[sanitized_key] = sensitive_key?(key) ? @thing_filter.label : sanitize(nested)
    end
  when Array
    value.map { |nested| sanitize(nested) }
  when String
    sanitize_string(value)
  else
    value
  end
end