diff --git a/aleksis/core/util/middlewares.py b/aleksis/core/util/middlewares.py
index cd34a1730ebc77c0379644eda4276f284da27671..b8cd4ed9f29c2d7bc600b58f72f21133a77194cf 100644
--- a/aleksis/core/util/middlewares.py
+++ b/aleksis/core/util/middlewares.py
@@ -22,28 +22,25 @@ class EnsurePersonMiddleware:
 
     def __call__(self, request: HttpRequest) -> HttpResponse:
         if not has_person(request):
-            if request.user.is_superuser:
-                # Super-users get a dummy person linked
-                dummy_person = DummyPerson(
-                    first_name=request.user.first_name, last_name=request.user.last_name
+            prefs = get_site_preferences()
+            if prefs.get("account__auto_link_person", False):
+                person, created = Person.objects.get_or_create(
+                    email=request.user.email,
+                    defaults={
+                        "first_name": request.user.first_name,
+                        "last_name": request.user.last_name,
+                    },
                 )
-                request.user.person = dummy_person
-            else:
-                prefs = get_site_preferences()
-
-                if prefs.get("account__auto_link_person", False):
-                    person, created = Person.objects.get_or_create(
-                        email=request.user.email,
-                        defaults={
-                            "first_name": request.user.first_name,
-                            "last_name": request.user.last_name,
-                        },
-                    )
-                    if created and not prefs.get("account__auto_create_person"):
-                        return
-
+                if prefs.get("account__auto_create_person") or not created:
                     person.user = request.user
                     person.save()
 
+        if request.user.is_superuser and not has_person(request):
+            # Super-users get a dummy person linked
+            dummy_person = DummyPerson(
+                first_name=request.user.first_name, last_name=request.user.last_name
+            )
+            request.user.person = dummy_person
+
         response = self.get_response(request)
         return response