From 327a6cc9648547d02479d5bed0aa0d66db8a2108 Mon Sep 17 00:00:00 2001
From: Maxi Schulz <maximilian.schulz@hs-hannover.de>
Date: Tue, 12 Dec 2017 18:44:05 +0100
Subject: [PATCH] Set default authentication backend on user for
 django.contrib.auth.login

---
 .gitignore                       | 4 ++--
 ssoauth/app_settings/defaults.py | 3 +++
 ssoauth/views.py                 | 6 ++++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index d32efa1..2dde8dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,5 +2,5 @@
 *~
 *.egg-info/
 .idea/
-.project/
-.pydevproject/
+.project
+.pydevproject
diff --git a/ssoauth/app_settings/defaults.py b/ssoauth/app_settings/defaults.py
index 8cd0a3d..16cd1f6 100644
--- a/ssoauth/app_settings/defaults.py
+++ b/ssoauth/app_settings/defaults.py
@@ -1,5 +1,6 @@
 import os
 from django import urls
+from django.conf import settings as django_settings
 
 
 """
@@ -86,3 +87,5 @@ SP_ORGANIZATION = {
         "url": "https://www.hs-hannover.de",
     },
 }
+
+DEFAULT_AUTH_BACKEND = django_settings.AUTHENTICATION_BACKENDS[0]
diff --git a/ssoauth/views.py b/ssoauth/views.py
index 267879a..31b7f82 100644
--- a/ssoauth/views.py
+++ b/ssoauth/views.py
@@ -124,7 +124,7 @@ class ACSAuthNView(SAMLMixin, View):
     This is NOT a universal ACS. It can only consume artifacts with an AuthN statement.
     It's how OneLogin toolkit works, cannot easily detect/process other statements here, so I don't even try.
     """
-    
+
     def post(self, request, *args, **kwargs):
         auth = self.get_onelogin_auth(request)
         auth.process_response()
@@ -177,6 +177,7 @@ class ACSAuthNView(SAMLMixin, View):
         )
         auth_utils.cleanup_direct_permissions(user=user)
         auth_utils.set_user_compat_flags(user=user)
+        user.backend = app_settings.DEFAULT_AUTH_BACKEND
         request.user = user
         contrib_auth.login(request, user)
         logger.debug("Logged in {user}".format(**locals()))
@@ -265,7 +266,7 @@ class DevView(FormView):
         user = self.request.user
         groups = list(user.groups.all()) if user.is_authenticated else list()
         permissions = list(user.get_all_permissions())
-        context["tables"] =[
+        context["tables"] = [
             ["User", OrderedDict([
                 ["user", "{0} ({1})".format(self.request.user.username, self.request.user.__class__.__name__)],
                 ["groups", ", ".join(str(g) for g in groups)],
@@ -296,6 +297,7 @@ class DevView(FormView):
             except exceptions.ObjectDoesNotExist:
                 import uuid
                 user = auth_utils.get_or_create_user(username=log_in_as_username, uuid=uuid.uuid4())
+            user.backend = app_settings.DEFAULT_AUTH_BACKEND
             self.request.user = user
             contrib_auth.login(request=self.request, user=user)
         elif toggle_group:
-- 
GitLab