From 51fb3b7e8e24cb8d0d52d2f757cc8ba5e6cdc0ad Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Mon, 8 May 2023 13:43:55 +0530 Subject: [PATCH] fix: enable lograge in superadmin path (#7026) * fix: lograge superadmin path * chore: add spec for superadmin devise session controller * chore: address review comment --- Gemfile.lock | 1 + config/initializers/lograge.rb | 5 +++-- .../super_admin/devise/sessions_controller_spec.rb | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 spec/controllers/super_admin/devise/sessions_controller_spec.rb diff --git a/Gemfile.lock b/Gemfile.lock index 10b99ea5b..595477803 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -770,6 +770,7 @@ GEM PLATFORMS arm64-darwin-20 + arm64-darwin-21 x86_64-darwin-18 x86_64-darwin-20 x86_64-darwin-21 diff --git a/config/initializers/lograge.rb b/config/initializers/lograge.rb index 98e77622e..6d9ad831c 100644 --- a/config/initializers/lograge.rb +++ b/config/initializers/lograge.rb @@ -4,12 +4,13 @@ if ActiveModel::Type::Boolean.new.cast(ENV.fetch('LOGRAGE_ENABLED', false)).pres Rails.application.configure do config.lograge.enabled = true config.lograge.formatter = Lograge::Formatters::Json.new - config.lograge.custom_payload do |controller| + # Fixes https://github.com/chatwoot/chatwoot/issues/6922 + user_id = controller.try(:current_user).try(:id) unless controller.is_a?(SuperAdmin::Devise::SessionsController) { host: controller.request.host, remote_ip: controller.request.remote_ip, - user_id: controller.current_user.try(:id) + user_id: user_id } end diff --git a/spec/controllers/super_admin/devise/sessions_controller_spec.rb b/spec/controllers/super_admin/devise/sessions_controller_spec.rb new file mode 100644 index 000000000..7b2c79faa --- /dev/null +++ b/spec/controllers/super_admin/devise/sessions_controller_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +RSpec.describe 'Super Admin', type: :request do + describe '/super_admin' do + it 'renders the login page' do + with_modified_env LOGRAGE_ENABLED: 'true' do + get '/super_admin/sign_in' + expect(response).to have_http_status(:ok) + end + end + end +end