From c7fe987c5a57439cb9a4e6191562239fca9a77da Mon Sep 17 00:00:00 2001 From: "Jens L." Date: Mon, 30 Jun 2025 21:30:34 +0200 Subject: [PATCH] core: fix missing serializer on AuthenticatedSession (#15323) fix Signed-off-by: Jens Langhammer --- authentik/blueprints/tests/test_serializer_models.py | 8 +++++--- authentik/core/models.py | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/authentik/blueprints/tests/test_serializer_models.py b/authentik/blueprints/tests/test_serializer_models.py index a3ae6005aa..3e8db3af19 100644 --- a/authentik/blueprints/tests/test_serializer_models.py +++ b/authentik/blueprints/tests/test_serializer_models.py @@ -5,7 +5,6 @@ from collections.abc import Callable from django.apps import apps from django.test import TestCase -from authentik.blueprints.v1.importer import is_model_allowed from authentik.lib.models import SerializerModel from authentik.providers.oauth2.models import RefreshToken @@ -22,10 +21,13 @@ def serializer_tester_factory(test_model: type[SerializerModel]) -> Callable: return model_class = test_model() self.assertTrue(isinstance(model_class, SerializerModel)) + # Models that have subclasses don't have to have a serializer + if len(test_model.__subclasses__()) > 0: + return self.assertIsNotNone(model_class.serializer) if model_class.serializer.Meta().model == RefreshToken: return - self.assertEqual(model_class.serializer.Meta().model, test_model) + self.assertTrue(issubclass(test_model, model_class.serializer.Meta().model)) return tester @@ -34,6 +36,6 @@ for app in apps.get_app_configs(): if not app.label.startswith("authentik"): continue for model in app.get_models(): - if not is_model_allowed(model): + if not issubclass(model, SerializerModel): continue setattr(TestModels, f"test_{app.label}_{model.__name__}", serializer_tester_factory(model)) diff --git a/authentik/core/models.py b/authentik/core/models.py index 61b955218d..190068fcb0 100644 --- a/authentik/core/models.py +++ b/authentik/core/models.py @@ -1082,6 +1082,12 @@ class AuthenticatedSession(SerializerModel): user = models.ForeignKey(User, on_delete=models.CASCADE) + @property + def serializer(self) -> type[Serializer]: + from authentik.core.api.authenticated_sessions import AuthenticatedSessionSerializer + + return AuthenticatedSessionSerializer + class Meta: verbose_name = _("Authenticated Session") verbose_name_plural = _("Authenticated Sessions")