From 955042b423998cf9fd6a414cab5410041a8ff4b9 Mon Sep 17 00:00:00 2001 From: mike seibel Date: Thu, 27 Aug 2020 13:11:37 -0700 Subject: [PATCH] context, uri --- blti/views/develop.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/blti/views/develop.py b/blti/views/develop.py index 788f360..d0e45da 100644 --- a/blti/views/develop.py +++ b/blti/views/develop.py @@ -6,6 +6,7 @@ base_string_uri, signature_base_string, normalize_parameters, sign_hmac_sha1_with_client) from blti import BLTIException +import re class BLTIDevBase(TemplateView): @@ -18,9 +19,15 @@ def lti_app(self): except AttributeError: raise BLTIException("Missing setting: LTI_DEVELOP_APP") + def lti_app_uri(self): + blti_match = re.match(r'^(http[s]?://[^/]+/)blti.*', + self.request.build_absolute_uri()) + return "{}{}".format(blti_match.group(1), self.lti_app()) + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['lti_app'] = self.lti_app() + return context class BLTIDevPrepare(BLTIDevBase): @@ -123,11 +130,9 @@ def get_context_data(self, **kwargs): lti_parameters += self._static_lti_parameters # sign payload - raw_uri = self.request.build_absolute_uri() - lti_app_len = len(self.lti_app()) - uri = raw_uri[0:raw_uri.index('/' + self.lti_app()) + lti_app_len + 1] + lti_app_uri = self.lti_app_uri() sbs = signature_base_string('POST', - base_string_uri(uri), + base_string_uri(lti_app_uri), normalize_parameters(lti_parameters)) client_key = self._client_key client = Client( @@ -136,7 +141,7 @@ def get_context_data(self, **kwargs): lti_parameters.append(("oauth_signature", signature)) context = super().get_context_data(**kwargs) - context['uri'] = uri + context['uri'] = lti_app_uri context['campus'] = campus context['role_name'] = role context['lti_parameters'] = lti_parameters