From 56463163944a68409a5015f1ebdafd241bb839eb Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Wed, 29 Jan 2020 01:14:53 +0100 Subject: [PATCH] Set context for raven --- app/controllers/application_controller.rb | 35 +++++++++++++++++------ 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4916847c..24775794 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,16 +1,18 @@ +# frozen_string_literal: true + class ApplicationController < ActionController::Base include ApplicationHelper include Pundit - MEMBER_ACTIONS = [:destroy, :edit, :show, :update] + MEMBER_ACTIONS = %i[destroy edit show update].freeze - after_action :verify_authorized, except: [:help, :welcome] - before_action :set_locale, :allow_iframe_requests, :load_embed_options + after_action :verify_authorized, except: %i[help welcome] + before_action :set_raven_context, :set_locale, :allow_iframe_requests, :load_embed_options protect_from_forgery(with: :exception, prepend: true) rescue_from Pundit::NotAuthorizedError, with: :render_not_authorized def current_user - ::NewRelic::Agent.add_custom_attributes({ external_user_id: session[:external_user_id], session_user_id: session[:user_id] }) + ::NewRelic::Agent.add_custom_attributes(external_user_id: session[:external_user_id], session_user_id: session[:user_id]) @current_user ||= ExternalUser.find_by(id: session[:external_user_id]) || login_from_session || login_from_other_sources end @@ -18,6 +20,19 @@ class ApplicationController < ActionController::Base raise Pundit::NotAuthorizedError unless current_user end + def set_raven_context + return if current_user.blank? + + Raven.user_context( + id: current_user.id, + type: current_user.class.name, + email: current_user.email, + username: current_user.displayname, + consumer: current_user.consumer.name + ) + end + private :set_raven_context + def render_not_authorized respond_to do |format| format.html do @@ -36,6 +51,7 @@ class ApplicationController < ActionController::Base def set_locale session[:locale] = params[:custom_locale] || params[:locale] || session[:locale] I18n.locale = session[:locale] || I18n.default_locale + Raven.extra_context(locale: I18n.locale) end private :set_locale @@ -48,11 +64,12 @@ class ApplicationController < ActionController::Base end def load_embed_options - if session[:embed_options].present? && session[:embed_options].is_a?(Hash) - @embed_options = session[:embed_options].symbolize_keys - else - @embed_options = {} - end + @embed_options = if session[:embed_options].present? && session[:embed_options].is_a?(Hash) + session[:embed_options].symbolize_keys + else + {} + end + Raven.extra_context(@embed_options) @embed_options end private :load_embed_options