diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1ee6f1411..a48d3b33b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -141,6 +141,8 @@ class ApplicationController < ActionController::Base Raven.user_context(sentry_user) end + # private method called by rails fwk + # see https://github.com/roidrage/lograge def append_info_to_payload(payload) super diff --git a/app/controllers/manager/application_controller.rb b/app/controllers/manager/application_controller.rb index b913664fc..8f41d7a2e 100644 --- a/app/controllers/manager/application_controller.rb +++ b/app/controllers/manager/application_controller.rb @@ -19,5 +19,29 @@ module Manager redirect_to manager_sign_in_path end end + + private + + # private method called by rails fwk + # see https://github.com/roidrage/lograge + def append_info_to_payload(payload) + super + + payload.merge!({ + user_agent: request.user_agent, + user_id: current_user&.id, + user_email: current_user&.email + }.compact) + + if browser.known? + payload.merge!({ + browser: browser.name, + browser_version: browser.version.to_s, + platform: browser.platform.name + }) + end + + payload + end end end diff --git a/spec/controllers/manager/application_controller_spec.rb b/spec/controllers/manager/application_controller_spec.rb new file mode 100644 index 000000000..3af6744c7 --- /dev/null +++ b/spec/controllers/manager/application_controller_spec.rb @@ -0,0 +1,22 @@ +describe Manager::ApplicationController, type: :controller do + describe 'append_info_to_payload' do + let(:current_user) { create(:administration) } + let(:payload) { {} } + + before do + allow(@controller).to receive(:current_user).and_return(current_user) + @controller.send(:append_info_to_payload, payload) + end + + it do + [:db_runtime, :view_runtime, :variant, :rendered_format].each do |key| + payload.delete(key) + end + expect(payload).to eq({ + user_agent: 'Rails Testing', + user_id: current_user.id, + user_email: current_user.email + }) + end + end +end