From e4bd05f4440f92e9936619db4ddae05b7330ed99 Mon Sep 17 00:00:00 2001 From: Marc 'risson' Schmitt Date: Tue, 24 Jun 2025 17:47:46 +0200 Subject: [PATCH] more rework Signed-off-by: Marc 'risson' Schmitt --- authentik/enterprise/providers/ssf/signals.py | 25 ------------------- authentik/providers/oauth2/signals.py | 13 ---------- authentik/providers/proxy/signals.py | 12 +-------- authentik/providers/rac/signals.py | 15 ----------- 4 files changed, 1 insertion(+), 64 deletions(-) diff --git a/authentik/enterprise/providers/ssf/signals.py b/authentik/enterprise/providers/ssf/signals.py index d66e874859..68456faf09 100644 --- a/authentik/enterprise/providers/ssf/signals.py +++ b/authentik/enterprise/providers/ssf/signals.py @@ -62,31 +62,6 @@ def ssf_providers_post_save(sender: type[Model], instance: SSFProvider, created: instance.save() -@receiver(user_logged_out) -def ssf_user_logged_out_session_revoked(sender, request: HttpRequest, user: User, **_): - """Session revoked trigger (user logged out)""" - if not request.session or not request.session.session_key or not user: - return - send_ssf_event( - EventTypes.CAEP_SESSION_REVOKED, - { - "initiating_entity": "user", - }, - sub_id={ - "format": "complex", - "session": { - "format": "opaque", - "id": sha256(request.session.session_key.encode("ascii")).hexdigest(), - }, - "user": { - "format": "email", - "email": user.email, - }, - }, - request=request, - ) - - @receiver(pre_delete, sender=AuthenticatedSession) def ssf_user_session_delete_session_revoked(sender, instance: AuthenticatedSession, **_): """Session revoked trigger (users' session has been deleted) diff --git a/authentik/providers/oauth2/signals.py b/authentik/providers/oauth2/signals.py index 8efbbff088..1844c7de37 100644 --- a/authentik/providers/oauth2/signals.py +++ b/authentik/providers/oauth2/signals.py @@ -1,23 +1,10 @@ -from django.contrib.auth.signals import user_logged_out from django.db.models.signals import post_save, pre_delete from django.dispatch import receiver -from django.http import HttpRequest from authentik.core.models import AuthenticatedSession, User from authentik.providers.oauth2.models import AccessToken, DeviceToken, RefreshToken -@receiver(user_logged_out) -def user_logged_out_oauth_tokens_removal(sender, request: HttpRequest, user: User, **_): - """Revoke tokens upon user logout""" - if not request.session or not request.session.session_key: - return - AccessToken.objects.filter( - user=user, - session__session__session_key=request.session.session_key, - ).delete() - - @receiver(pre_delete, sender=AuthenticatedSession) def user_session_deleted_oauth_tokens_removal(sender, instance: AuthenticatedSession, **_): """Revoke tokens upon user logout""" diff --git a/authentik/providers/proxy/signals.py b/authentik/providers/proxy/signals.py index b31c902584..80dea9fb6c 100644 --- a/authentik/providers/proxy/signals.py +++ b/authentik/providers/proxy/signals.py @@ -1,22 +1,12 @@ """Proxy provider signals""" -from django.contrib.auth.signals import user_logged_out from django.db.models.signals import pre_delete from django.dispatch import receiver -from django.http import HttpRequest -from authentik.core.models import AuthenticatedSession, User +from authentik.core.models import AuthenticatedSession from authentik.providers.proxy.tasks import proxy_on_logout -@receiver(user_logged_out) -def logout_proxy_revoke_direct(sender: type[User], request: HttpRequest, **_): - """Catch logout by direct logout and forward to proxy providers""" - if not request.session or not request.session.session_key: - return - proxy_on_logout.send(request.session.session_key) - - @receiver(pre_delete, sender=AuthenticatedSession) def logout_proxy_revoke(sender: type[AuthenticatedSession], instance: AuthenticatedSession, **_): """Catch logout by expiring sessions being deleted""" diff --git a/authentik/providers/rac/signals.py b/authentik/providers/rac/signals.py index 799f2a08a5..a4e3d2e8c6 100644 --- a/authentik/providers/rac/signals.py +++ b/authentik/providers/rac/signals.py @@ -17,21 +17,6 @@ from authentik.providers.rac.consumer_client import ( from authentik.providers.rac.models import ConnectionToken, Endpoint -@receiver(user_logged_out) -def user_logged_out_session(sender, request: HttpRequest, user: User, **_): - """Disconnect any open RAC connections""" - if not request.session or not request.session.session_key: - return - layer = get_channel_layer() - async_to_sync(layer.group_send)( - RAC_CLIENT_GROUP_SESSION - % { - "session": request.session.session_key, - }, - {"type": "event.disconnect", "reason": "session_logout"}, - ) - - @receiver(pre_delete, sender=AuthenticatedSession) def user_session_deleted(sender, instance: AuthenticatedSession, **_): layer = get_channel_layer()