From edb813ab149f1628d618b11fb03f29d5b4f964bf Mon Sep 17 00:00:00 2001 From: Tom Staubitz Date: Sat, 31 Dec 2016 00:58:36 +0100 Subject: [PATCH] added separate value for the actual external_id of the external user. --- app/controllers/concerns/lti.rb | 11 ++++++++--- app/controllers/exercises_controller.rb | 2 +- app/helpers/lti_helper.rb | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/controllers/concerns/lti.rb b/app/controllers/concerns/lti.rb index f84c8a04..702327d1 100644 --- a/app/controllers/concerns/lti.rb +++ b/app/controllers/concerns/lti.rb @@ -19,9 +19,11 @@ module Lti #Todo replace session with lti_parameter /done #TODO decide if we need to remove all LtiParameters for user/consumer if (exercise_id.nil?) - LtiParameter.destroy_all(consumers_id: session[:consumer_id], external_user_id: session[:external_user_id]) + LtiParameter.destroy_all(consumers_id: session[:consumer_id], external_user_id: session[:external_user_external_id]) else #TODO: probably it does not make sense to keep the LtiParameters if the session is deleted - LtiParameter.destroy_all(consumers_id: session[:consumer_id], external_user_id: session[:external_user_id], exercises_id: exercise_id) + LtiParameter.destroy_all(consumers_id: session[:consumer_id], + external_user_id: session[:external_user_external_id], + exercises_id: exercise_id) end session.delete(:consumer_id) session.delete(:external_user_id) @@ -102,8 +104,10 @@ module Lti fail(Error, "Score #{score} must be between 0 and #{MAXIMUM_SCORE}!") unless (0..MAXIMUM_SCORE).include?(score) #Todo replace session with lti_parameter /done lti_parameter = LtiParameter.where(consumers_id: session[:consumer_id], - external_user_id: session[:external_user_id], + external_user_id: session[:external_user_external_id], exercises_id: exercise_id).first + # lti_parameters = JSON.parse(lti_parameter.lti_parameters) + consumer = Consumer.find_by(id: session[:consumer_id]) provider = build_tool_provider(consumer: consumer, parameters: lti_parameter.lti_parameters) # provider = build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), parameters: session[:lti_parameters]) @@ -136,6 +140,7 @@ module Lti lti_parameters.save! session[:consumer_id] = options[:consumer].id + session[:external_user_external_id] = @current_user.external_id session[:external_user_id] = @current_user.id end private :store_lti_session_data diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index c92e8084..e9527c48 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -159,7 +159,7 @@ class ExercisesController < ApplicationController def redirect_to_lti_return_path #Todo replace session with lti_parameter /done lti_parameter = LtiParameter.where(consumers_id: session[:consumer_id], - external_user_id: session[:external_user_id], + external_user_id: session[:external_user_external_id], exercises_id: @submission.exercise_id).first path = lti_return_path(consumer_id: session[:consumer_id], diff --git a/app/helpers/lti_helper.rb b/app/helpers/lti_helper.rb index 4edf8445..5d1145d9 100644 --- a/app/helpers/lti_helper.rb +++ b/app/helpers/lti_helper.rb @@ -2,7 +2,7 @@ module LtiHelper def lti_outcome_service?(exercise_id) #Todo replace session with lti_parameter /done lti_parameters = LtiParameter.where(consumers_id: session[:consumer_id], - external_user_id: session[:external_user_id], + external_user_id: session[:external_user_external_id], exercises_id: exercise_id).lis_outcome_service_url? !lti_parameters.nil? && lti_parameters.size > 0 # session[:lti_parameters].try(:has_key?, 'lis_outcome_service_url')