Fix LTI 1.1 Basic Outcomes Service and LTI 2.0 Result Service to Support External User IDs
In #307, we added the ability to send a stable, static user identifier (i.e. external user ID) to fix failed launches with the QwikLabs tool. This is because the QwikLabs tool did not work with the course-anonymized user IDs we used to send (i.e. anonymous user IDs). Inadvertently, this change broke the LTI 1.1 Basic Outcomes Service and the LTI 2.0 Result Service for courses that use the external user ID (i.e. they have the lti_consumer.enable_external_user_id_1p1_launches CourseWaffleFlag enabled). The Basic Outcomes Service and Result Service handle grade pass backs. Because we now have two ways to identify a user in LTI 1.1/2.0, we must update the Basic Outcomes Service and Result Service to support both.
- Fix the LTI 1.1 Outcome Results Service to be able to tie an outcome pass back to a user when the user ID is an
external_user_id. - Fix the LTI 2.0 Result Service to be able to tie a result pass back to a user when the user ID is an
external_user_id. - Update the
RESULT_SERVICE_SUFFIX_PARSERregex string to be able to parse UUIDs to accommodateexternal_user_ids. - Add a
get_lti_1p1_user_from_user_idmethod to theLtiConsumerXBlockto get the user object associated with a user
ID.