From bd60e877f6c50b4e9647883dbd3c1096b8d5eaa6 Mon Sep 17 00:00:00 2001
From: Art Lukyanchyk <artiom.lukyanchyk@hs-hannover.de>
Date: Wed, 19 May 2021 11:29:36 +0200
Subject: [PATCH] Fix the fiddly bits

---
 ssoauth/views.py | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/ssoauth/views.py b/ssoauth/views.py
index 1ba9b3a..62babb9 100644
--- a/ssoauth/views.py
+++ b/ssoauth/views.py
@@ -327,23 +327,13 @@ class DevView(FormView):
         log_in_as_username = form.cleaned_data["username"]
         toggle_group = form.cleaned_data["toggle_group"]
         local_logout = bool(self.request.POST.get("local-logout", None))
-        if local_logout:
-            if log_in_as_username or toggle_group:
-                log_in_as_username, toggle_group = None, None  # single page / single form for everything can cause weird effects
         # perform an action
         if local_logout:
             logger.info("Logging out {u}".format(u=self.request.user))
             contrib_auth.logout(self.request)
-        elif toggle_group:
-            logger.info("Toggling group: {0}".format(toggle_group))
-            if self.request.user.is_authenticated:
-                if toggle_group in self.request.user.groups.all():
-                    self.request.user.groups.remove(toggle_group)
-                else:
-                    self.request.user.groups.add(toggle_group)
-            else:
-                logger.warning("Too anonymous to join groups.")
-        elif log_in_as_username:
+            if log_in_as_username or toggle_group:
+                log_in_as_username, toggle_group = None, None  # single page and single form for everything, avoid weird effects
+        if log_in_as_username:
             logger.info("Logging in as {0}".format(log_in_as_username))
             try:
                 user = auth_utils.get_user(username=log_in_as_username)
@@ -353,6 +343,15 @@ class DevView(FormView):
             user.backend = app_settings.PRETEND_AUTH_BACKEND
             self.request.user = user
             contrib_auth.login(request=self.request, user=user)
+        if toggle_group:
+            logger.info("Toggling group: {0}".format(toggle_group))
+            if self.request.user.is_authenticated:
+                if toggle_group in self.request.user.groups.all():
+                    self.request.user.groups.remove(toggle_group)
+                else:
+                    self.request.user.groups.add(toggle_group)
+            else:
+                logger.warning("Too anonymous to join groups.")
         # update the compat flags, might be needed when user or their groups change
         if self.request.user.is_authenticated:
             auth_utils.update_user_compat_flags(self.request.user, False)
-- 
GitLab