Sha256: 26ff3bb357282bc7f9d1178c227ce0f2941b954d55b0603757afe48b6ec71fb7

Contents?: true

Size: 1.24 KB

Versions: 20

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module Devise
  class ParameterFilter
    def initialize(case_insensitive_keys, strip_whitespace_keys)
      @case_insensitive_keys = case_insensitive_keys || []
      @strip_whitespace_keys = strip_whitespace_keys || []
    end

    def filter(conditions)
      conditions = stringify_params(conditions.dup)

      conditions.merge!(filtered_hash_by_method_for_given_keys(conditions.dup, :downcase, @case_insensitive_keys))
      conditions.merge!(filtered_hash_by_method_for_given_keys(conditions.dup, :strip, @strip_whitespace_keys))

      conditions
    end

    def filtered_hash_by_method_for_given_keys(conditions, method, condition_keys)
      condition_keys.each do |k|
        next unless conditions.key?(k)

        value = conditions[k]
        conditions[k] = value.send(method) if value.respond_to?(method)
      end

      conditions
    end

    # Force keys to be string to avoid injection on mongoid related database.
    def stringify_params(conditions)
      return conditions unless conditions.is_a?(Hash)
      conditions.each do |k, v|
        conditions[k] = v.to_s if param_requires_string_conversion?(v)
      end
    end

    private

    def param_requires_string_conversion?(value)
      true
    end
  end
end

Version data entries

20 entries across 19 versions & 4 rubygems

Version Path
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/devise-4.9.4/lib/devise/parameter_filter.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/devise-4.9.4/lib/devise/parameter_filter.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/devise-4.9.4/lib/devise/parameter_filter.rb
devise-4.9.4 lib/devise/parameter_filter.rb
devise-4.9.3 lib/devise/parameter_filter.rb
devise-4.9.2 lib/devise/parameter_filter.rb
devise-4.9.1 lib/devise/parameter_filter.rb
devise-4.9.0 lib/devise/parameter_filter.rb
devise-4.8.1 lib/devise/parameter_filter.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/devise-4.8.0/lib/devise/parameter_filter.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/devise-4.8.0/lib/devise/parameter_filter.rb
devise-4.8.0 lib/devise/parameter_filter.rb
devise-4.7.3 lib/devise/parameter_filter.rb
devise-4.7.2 lib/devise/parameter_filter.rb
devise-4.7.1 lib/devise/parameter_filter.rb
devise-4.7.0 lib/devise/parameter_filter.rb
devise-4.6.2 lib/devise/parameter_filter.rb
devise-4.6.1 lib/devise/parameter_filter.rb
devise-4.6.0 lib/devise/parameter_filter.rb
devise-4.5.0 lib/devise/parameter_filter.rb