From 5caae22b235418d372fc6ea8cfc7ef82fa2ce276 Mon Sep 17 00:00:00 2001 From: Michael Vu Date: Wed, 10 Mar 2021 12:54:03 +0800 Subject: [PATCH 1/4] Bump to 2.0.1 --- app/controllers/impressionist_controller.rb | 13 ++++++++++++- .../templates/create_impressions_table.rb.erb | 11 +++++++---- lib/impressionist/setup_association.rb | 2 ++ lib/impressionist/version.rb | 2 +- upgrade_migrations/version_2_0_1.rb | 14 ++++++++++++++ 5 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 upgrade_migrations/version_2_0_1.rb diff --git a/app/controllers/impressionist_controller.rb b/app/controllers/impressionist_controller.rb index 4c77bac4..3a41fb1e 100644 --- a/app/controllers/impressionist_controller.rb +++ b/app/controllers/impressionist_controller.rb @@ -63,10 +63,12 @@ def associative_create_statement(query_params={}) query_params.reverse_merge!( :controller_name => controller_name, :action_name => action_name, + :user_type => user_type, :user_id => user_id, :request_hash => @impressionist_hash, :session_hash => session_hash, :ip_address => request.remote_ip, + :original_url => request.original_url, :referrer => request.referer, :params => filter.filter(params_hash) ) @@ -167,10 +169,19 @@ def params_hash request.params.except(:controller, :action, :id) end - #use both @current_user and current_user helper + #use all @current_user, current_user and any_logged_in_user helper + def user_type + user_type = @current_user ? @current_user.class.name : nil rescue nil + user_type = current_user ? current_user.class.name : nil rescue nil if user_type.blank? + user_type = any_logged_in_user ? any_logged_in_user.class.name : nil rescue nil if user_type.blank? + user_type + end + + #use all @current_user, current_user and any_logged_in_user helper def user_id user_id = @current_user ? @current_user.id : nil rescue nil user_id = current_user ? current_user.id : nil rescue nil if user_id.blank? + user_id = any_logged_in_user ? any_logged_in_user.id : nil rescue nil if user_id.blank? user_id end end diff --git a/lib/generators/active_record/templates/create_impressions_table.rb.erb b/lib/generators/active_record/templates/create_impressions_table.rb.erb index e0f24283..2d81eb15 100644 --- a/lib/generators/active_record/templates/create_impressions_table.rb.erb +++ b/lib/generators/active_record/templates/create_impressions_table.rb.erb @@ -3,6 +3,7 @@ class CreateImpressionsTable < ActiveRecord::Migration<%= Rails::VERSION::MAJOR create_table :impressions, :force => true do |t| t.string :impressionable_type t.integer :impressionable_id + t.string :user_type t.integer :user_id t.string :controller_name t.string :action_name @@ -11,7 +12,9 @@ class CreateImpressionsTable < ActiveRecord::Migration<%= Rails::VERSION::MAJOR t.string :ip_address t.string :session_hash t.text :message + t.text :original_url t.text :referrer + t.text :params t.timestamps end @@ -19,11 +22,11 @@ class CreateImpressionsTable < ActiveRecord::Migration<%= Rails::VERSION::MAJOR add_index :impressions, [:impressionable_type, :impressionable_id, :request_hash], :name => "poly_request_index", :unique => false add_index :impressions, [:impressionable_type, :impressionable_id, :ip_address], :name => "poly_ip_index", :unique => false add_index :impressions, [:impressionable_type, :impressionable_id, :session_hash], :name => "poly_session_index", :unique => false - add_index :impressions, [:controller_name,:action_name,:request_hash], :name => "controlleraction_request_index", :unique => false - add_index :impressions, [:controller_name,:action_name,:ip_address], :name => "controlleraction_ip_index", :unique => false - add_index :impressions, [:controller_name,:action_name,:session_hash], :name => "controlleraction_session_index", :unique => false + add_index :impressions, [:controller_name,:action_name, :request_hash], :name => "controlleraction_request_index", :unique => false + add_index :impressions, [:controller_name,:action_name, :ip_address], :name => "controlleraction_ip_index", :unique => false + add_index :impressions, [:controller_name,:action_name, :session_hash], :name => "controlleraction_session_index", :unique => false add_index :impressions, [:impressionable_type, :impressionable_id, :params], :name => "poly_params_request_index", :unique => false, :length => {:params => 255 } - add_index :impressions, :user_id + add_index :impressions, [:user_type, :user_id] end def self.down diff --git a/lib/impressionist/setup_association.rb b/lib/impressionist/setup_association.rb index b5c3c16e..b098f247 100644 --- a/lib/impressionist/setup_association.rb +++ b/lib/impressionist/setup_association.rb @@ -37,8 +37,10 @@ def make_accessible :action_name, :ip_address, :view_name, + :original_url, :referrer, :message, + :user_type, :user_id, :params) end diff --git a/lib/impressionist/version.rb b/lib/impressionist/version.rb index 2026a47f..36397c9f 100644 --- a/lib/impressionist/version.rb +++ b/lib/impressionist/version.rb @@ -1,3 +1,3 @@ module Impressionist - VERSION = "2.0.0" + VERSION = "2.0.1" end diff --git a/upgrade_migrations/version_2_0_1.rb b/upgrade_migrations/version_2_0_1.rb new file mode 100644 index 00000000..6009f894 --- /dev/null +++ b/upgrade_migrations/version_2_0_1.rb @@ -0,0 +1,14 @@ +class Version201UpdateImpressionsTable < ActiveRecord::Migration[4.2] + def self.up + add_column :impressions, :user_type, :string + add_column :impressions, :original_url, :text + + add_index :impressions, [:user_type, :user_id] + end + + def self.down + remove_index :impressions, [:user_type, :user_id] + remove_column :impressions, :user_type + remove_column :impressions, :original_url + end +end \ No newline at end of file From 3d45822453a6ce9fd5c716389bf622e846e955bc Mon Sep 17 00:00:00 2001 From: Michael Vu Date: Fri, 12 Mar 2021 15:02:00 +0800 Subject: [PATCH 2/4] Improve params is base64 upload --- app/controllers/impressionist_controller.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/controllers/impressionist_controller.rb b/app/controllers/impressionist_controller.rb index 3a41fb1e..35722bdc 100644 --- a/app/controllers/impressionist_controller.rb +++ b/app/controllers/impressionist_controller.rb @@ -166,7 +166,25 @@ def session_hash end def params_hash - request.params.except(:controller, :action, :id) + clean_up(request.params.except(:controller, :action, :id).dup) + end + + def clean_up(params) + return params if params.blank? + + patern = /\Adata:(?[-\w]+\/[-\w+.]+)?;base64,(?.*)/m + params.delete_if do |key, value| + if value.is_a?(Hash) + clean_up(value) + value.blank? + elsif value.is_a?(String) + value.match(patern).present? + elsif value.is_a?(Array) + value.delete_if { |element| element.is_a?(String) && element.match(patern).present? } + value.blank? + end + end + params end #use all @current_user, current_user and any_logged_in_user helper From 6e978b08078e3957f541d17262087fc3dfe30ee0 Mon Sep 17 00:00:00 2001 From: Michael Vu Date: Fri, 14 May 2021 14:34:14 +0800 Subject: [PATCH 3/4] Update bundler dependency --- impressionist.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/impressionist.gemspec b/impressionist.gemspec index 20e8a3c1..426811b9 100644 --- a/impressionist.gemspec +++ b/impressionist.gemspec @@ -22,7 +22,7 @@ Gem::Specification.new do |s| s.add_dependency 'nokogiri', RUBY_VERSION < '2.1.0' ? '~> 1.6.0' : '~> 1' s.add_dependency 'rails', '>= 3.2.15' - s.add_development_dependency 'bundler', '~> 2.0' + s.add_development_dependency 'bundler', '~> 2.2' s.add_development_dependency 'capybara' s.add_development_dependency 'rspec-rails' s.add_development_dependency 'sqlite3', '~> 1.4' From 0fceeb4039937762eb96ae7b1d21a79b76956a3f Mon Sep 17 00:00:00 2001 From: Michael Vu Date: Sun, 10 Oct 2021 11:56:03 +0800 Subject: [PATCH 4/4] Clone request params --- app/controllers/impressionist_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/impressionist_controller.rb b/app/controllers/impressionist_controller.rb index 35722bdc..4c79d054 100644 --- a/app/controllers/impressionist_controller.rb +++ b/app/controllers/impressionist_controller.rb @@ -166,7 +166,7 @@ def session_hash end def params_hash - clean_up(request.params.except(:controller, :action, :id).dup) + clean_up(Hash.new(request.params.except(:controller, :action, :id).dup)) end def clean_up(params)