Refactor LTI parameters and add study group

* This change also requires that submissions in our test need to have a valid study group.
This commit is contained in:
Sebastian Serth
2023-08-19 11:28:57 +02:00
committed by Sebastian Serth
parent e2baa2ee55
commit e3603758ef
18 changed files with 114 additions and 54 deletions

View File

@ -1,13 +1,17 @@
# frozen_string_literal: true
require 'oauth/request_proxy/action_controller_request' # Rails 5 changed `Rack::Request` to `ActionDispatch::Request`
module LtiHelper
def lti_outcome_service?(exercise_id, external_user_id)
return false if external_user_id == ''
# Checks for support of the LTI outcome service for the given exercise and user.
# If the user passed is not the `current_user`, a study group id **must** be passed as well.
def lti_outcome_service?(exercise, user, study_group_id = user.current_study_group_id)
return false unless user.external_user?
lti_parameters = LtiParameter.where(external_users_id: external_user_id,
exercises_id: exercise_id).lis_outcome_service_url?.last
!lti_parameters.nil? && lti_parameters.present?
lis_outcome_service_parameters(exercise, user, study_group_id).present?
end
private
def lis_outcome_service_parameters(exercise, external_user, study_group_id)
external_user.lti_parameters.lis_outcome_service_url?.find_by(exercise:, study_group_id:)
end
end