Skip to content
Snippets Groups Projects
Commit e1a25ae1 authored by Jaime Bermudez's avatar Jaime Bermudez
Browse files

Merge pull request #10 from Harvard-University-iCommons/feature/fix_for_test_student

Modify logic for picking a default username value when lis_person_source...
parents aa884feb a26ee99e
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,7 @@ oauth_creds = settings.LTI_OAUTH_CREDENTIALS
class LTIAuthBackend(ModelBackend):
"""
By default, the ``authenticate`` method creates ``User`` objects for
usernames that don't already exist in the database. Subclasses can disable
......@@ -24,6 +25,8 @@ class LTIAuthBackend(ModelBackend):
# Create a User object if not already in the database?
create_unknown_user = True
# Username prefix for users without an sis source id
unknown_user_prefix = "cuid:"
def authenticate(self, request):
......@@ -80,16 +83,14 @@ class LTIAuthBackend(ModelBackend):
user = None
if request.POST.get('lis_person_sourcedid'):
username = self.clean_username(request.POST.get('lis_person_sourcedid'))
elif request.POST.get('custom_canvas_user_login_id'):
username = self.clean_username(request.POST.get('custom_canvas_user_login_id'))
else:
username = self.clean_username(request.POST.get('user_id'))
# Retrieve username from LTI parameter or default to an overridable function return value
username = tool_provider.lis_person_sourcedid or self.get_default_username(
tool_provider, prefix=self.unknown_user_prefix)
username = self.clean_username(username) # Clean it
email = request.POST.get('lis_person_contact_email_primary')
first_name = request.POST.get('lis_person_name_given')
last_name = request.POST.get('lis_person_name_family')
email = tool_provider.lis_person_contact_email_primary
first_name = tool_provider.lis_person_name_given
last_name = tool_provider.lis_person_name_family
logger.info("We have a valid username: %s" % username)
......@@ -109,7 +110,8 @@ class LTIAuthBackend(ModelBackend):
logger.debug('authenticate found an existing user for %s' % username)
else:
logger.debug('automatic new user creation is turned OFF! just try to find and existing record')
logger.debug(
'automatic new user creation is turned OFF! just try to find and existing record')
try:
user = UserModel.objects.get_by_natural_key(username)
except UserModel.DoesNotExist:
......@@ -131,3 +133,12 @@ class LTIAuthBackend(ModelBackend):
def clean_username(self, username):
return username
def get_default_username(self, tool_provider, prefix=''):
"""
Return a default username value from tool_provider in case offical
LTI param lis_person_sourcedid was not present.
"""
# Default back to user_id lti param
uname = tool_provider.get_custom_param('canvas_user_id') or tool_provider.user_id
return prefix + uname
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment