From dbfc1b2e11125a19662464c18feef788c9eeb95e Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Wed, 4 Mar 2020 17:42:07 +0100 Subject: [PATCH] Add additional logging for Sentry --- app/controllers/concerns/lti.rb | 7 +++--- app/controllers/exercises_controller.rb | 33 +++++++++++++++++-------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/controllers/concerns/lti.rb b/app/controllers/concerns/lti.rb index 1af375ac..6cd3a64a 100644 --- a/app/controllers/concerns/lti.rb +++ b/app/controllers/concerns/lti.rb @@ -105,11 +105,12 @@ module Lti def require_valid_exercise_token proxy_exercise = ProxyExercise.find_by(token: params[:custom_token]) - @exercise = unless proxy_exercise.nil? - proxy_exercise.get_matching_exercise(@current_user) - else + @exercise = if proxy_exercise.nil? Exercise.find_by(token: params[:custom_token]) + else + proxy_exercise.get_matching_exercise(@current_user) end + session[:lti_exercise_id] = @exercise.id refuse_lti_launch(message: t('sessions.oauth.invalid_exercise_token')) unless @exercise end diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index e94f5cea..69c5795c 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -323,17 +323,30 @@ class ExercisesController < ApplicationController end def redirect_to_lti_return_path - lti_parameter = LtiParameter.where(consumers_id: session[:consumer_id], - external_users_id: @submission.user_id, - exercises_id: @submission.exercise_id).first + begin + lti_parameter = LtiParameter.where(consumers_id: session[:consumer_id], + external_users_id: @submission.user_id, + exercises_id: @submission.exercise_id).first - path = lti_return_path(consumer_id: session[:consumer_id], - submission_id: @submission.id, - url: consumer_return_url(build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), - parameters: lti_parameter.lti_parameters))) - respond_to do |format| - format.html { redirect_to(path) } - format.json { render(json: {redirect: path}) } + path = lti_return_path(consumer_id: session[:consumer_id], + submission_id: @submission.id, + url: consumer_return_url(build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), + parameters: lti_parameter.lti_parameters))) + respond_to do |format| + format.html { redirect_to(path) } + format.json { render(json: {redirect: path}) } + end + rescue StandardError + Raven.extra_context( + consumers_id: session[:consumer_id], + external_users_id: @submission.user_id, + exercises_id: @submission.exercise_id, + session: session, + submission: @submission, + params: params, + current_user: current_user, + lti_exercise_id: session[:lti_exercise_id] + ) end end private :redirect_to_lti_return_path