diff --git a/app/controllers/concerns/nav_bar_profile_concern.rb b/app/controllers/concerns/nav_bar_profile_concern.rb index 4c856480f98..9201c278824 100644 --- a/app/controllers/concerns/nav_bar_profile_concern.rb +++ b/app/controllers/concerns/nav_bar_profile_concern.rb @@ -16,6 +16,12 @@ def fallback_nav_bar_profile private + def nav_bar_user_or_guest + # when instanciating manually the controller (see below), + # we don't have request and current_user would fail + request && current_user ? :user : :guest + end + # Shared controllers (search, errors, release notes…) don't have specific context # Simple attempt to try to re-use the profile from the previous page # so user does'not feel lost. @@ -28,6 +34,10 @@ def nav_bar_profile_from_referrer controller_instance = controller_class.new controller_instance.try(:nav_bar_profile) + rescue StandardError => e # we don't want broken logic in nav bar profile to fail the request + Sentry.capture_exception(e) + + nil end # Fallback for shared controllers from user account diff --git a/app/controllers/users/commencer_controller.rb b/app/controllers/users/commencer_controller.rb index 76fbcf93e37..7ab8c4c991e 100644 --- a/app/controllers/users/commencer_controller.rb +++ b/app/controllers/users/commencer_controller.rb @@ -87,9 +87,7 @@ def procedure_for_help retrieve_procedure end - def nav_bar_profile - current_user ? :user : :guest - end + def nav_bar_profile = nav_bar_user_or_guest def closing_details @procedure = Procedure.find_by(path: params[:path]) diff --git a/app/controllers/users/statistiques_controller.rb b/app/controllers/users/statistiques_controller.rb index acd6b90799f..aa5019fe0b8 100644 --- a/app/controllers/users/statistiques_controller.rb +++ b/app/controllers/users/statistiques_controller.rb @@ -2,6 +2,8 @@ module Users class StatistiquesController < ApplicationController + def nav_bar_profile = nav_bar_user_or_guest + def statistiques @procedure = procedure return procedure_not_found if @procedure.blank? || @procedure.brouillon?