From db90c57e9e6959aca3b6641fdf36c2c799b37026 Mon Sep 17 00:00:00 2001
From: Giovanni Cimolin da Silva <giovannicimolin@gmail.com>
Date: Thu, 14 May 2020 16:41:18 -0300
Subject: [PATCH] Swtich to external user id

Signed-off-by: Giovanni Cimolin da Silva <giovannicimolin@gmail.com>
---
 lti_consumer/lti_consumer.py | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/lti_consumer/lti_consumer.py b/lti_consumer/lti_consumer.py
index e3262e9..9b34124 100644
--- a/lti_consumer/lti_consumer.py
+++ b/lti_consumer/lti_consumer.py
@@ -675,6 +675,16 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock):
             return 'problem'
         return 'other'
 
+    @property
+    def external_user_id(self):
+        """
+        Returns the opaque external user id for the current user.
+        """
+        user_id = self.runtime.service(self, 'user').get_external_user_id('lti')
+        if user_id is None:
+            raise LtiError(self.ugettext("Could not get user id for current request"))
+        return six.text_type(six.moves.urllib.parse.quote(user_id))
+
     @property
     def resource_link_id(self):
         """
@@ -976,7 +986,7 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock):
 
         # Pass user data
         lti_consumer.set_user_data(
-            user_id=self.runtime.user_id,
+            user_id=self.external_user_id,
             # Pass django user role to library
             role=self.runtime.get_user_role()
         )
@@ -996,10 +1006,7 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock):
             )
         })
 
-        context.update({
-            'launch_url': self.lti_1p3_launch_url,
-            'user': self.runtime.user_id
-        })
+        context.update({'launch_url': self.lti_1p3_launch_url})
         template = loader.render_mako_template('/templates/html/lti_1p3_launch.html', context)
         return Response(template, content_type='text/html')
 
-- 
GitLab