From ab9c73a1e2a609b6da1bd68f205247c95cfb9240 Mon Sep 17 00:00:00 2001 From: kjin- Date: Wed, 4 Sep 2013 12:05:16 +0800 Subject: [PATCH] allows filtering of nested params --- lib/padrino-contrib/exception_notifier.rb | 11 ++++++++--- spec/exception_notifier_spec.rb | 9 +++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/padrino-contrib/exception_notifier.rb b/lib/padrino-contrib/exception_notifier.rb index 0075f2b..0c26a19 100644 --- a/lib/padrino-contrib/exception_notifier.rb +++ b/lib/padrino-contrib/exception_notifier.rb @@ -34,10 +34,15 @@ def self.registered(app) env.each { |k,v| body += "\n#{k}: #{v}" } body += "\n\n---Params:\n" params.each do |k,v| - if settings.exceptions_params_filter.include?(k) - body += "\n#{k.inspect} => [FILTERED]" + if v.is_a? Hash + (settings.exceptions_params_filter & v.keys).each{ |key| v.merge! key => '[FILTERED]' } + body += "\n#{k.inspect} => { #{v.map{ |k,v| "#{k.inspect} => #{v == '[FILTERED]' ? v.chomp : v.inspect}" }.join(', ')} }" else - body += "\n#{k.inspect} => #{v.inspect}" + if settings.exceptions_params_filter.include?(k) + body += "\n#{k.inspect} => [FILTERED]" + else + body += "\n#{k.inspect} => #{v.inspect}" + end end end logger.error body diff --git a/spec/exception_notifier_spec.rb b/spec/exception_notifier_spec.rb index 5ff5399..a46faf2 100644 --- a/spec/exception_notifier_spec.rb +++ b/spec/exception_notifier_spec.rb @@ -62,6 +62,15 @@ def last_email expect(last_email.body).to match /"foo" => \[FILTERED\]/ end + it 'allows filtering of nested request params' do + get '/boom', { :account => { :email => 'foo@example.com', + :password => 'super_secret', + :password_confirmation => 'super_secret' } + } + expect(last_email.body).to match /"password" => \[FILTERED\]/ + expect(last_email.body).to match /"password_confirmation" => \[FILTERED\]/ + end + it 'renders an error page' do get '/boom' expect(last_response.status).to eq 500