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