Sha256: 915fb5fa3d14fb9c0b682c7cb3a9f50a6cd14968761c6722f1eabe0715efc563

Contents?: true

Size: 1.16 KB

Versions: 12

Compression:

Stored size: 1.16 KB

Contents

module Blouson
  class SensitiveParamsSilencer
    class << self
      def around(controller)
        if include_sensitive_data?(controller)
          begin
            old_level = ActiveRecord::Base.logger.level
            ActiveRecord::Base.logger.level = Logger::INFO
            Rails.logger.info "  [Blouson::SensitiveParamsSilencer] SQL Log is skipped for sensitive data"
            yield
          ensure
            ActiveRecord::Base.logger.level = old_level
          end
        else
          yield
        end
      end

      def include_sensitive_data?(controller)
        nested_params_keys(controller.params).any? { |key, value| Blouson::SENSITIVE_PARAMS_REGEXP === key }
      end

      private :include_sensitive_data?

      def nested_params_keys(params)
        if params.respond_to?(:to_unsafe_h)
          params = params.to_unsafe_h
        end
        user_params = params.reject { |key, value| 'controller' == key || 'action' == key }
        user_params.inject([]) do |keys, pair|
          keys << pair.first
          keys += pair.last.keys if pair.last.kind_of? Hash
          keys
        end
      end

      private :nested_params_keys
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
blouson-4.0.0 lib/blouson/sensitive_params_silencer.rb
blouson-3.0.0 lib/blouson/sensitive_params_silencer.rb
blouson-2.0.0 lib/blouson/sensitive_params_silener.rb
blouson-1.1.4 lib/blouson/sensitive_params_silener.rb
blouson-1.1.3 lib/blouson/sensitive_params_silener.rb
blouson-1.1.2 lib/blouson/sensitive_params_silener.rb
blouson-1.1.1 lib/blouson/sensitive_params_silener.rb
blouson-1.1.0 lib/blouson/sensitive_params_silener.rb
blouson-1.0.3 lib/blouson/sensitive_params_silener.rb
blouson-1.0.2 lib/blouson/sensitive_params_silener.rb
blouson-1.0.1 lib/blouson/sensitive_params_silener.rb
blouson-1.0.0 lib/blouson/sensitive_params_silener.rb