From 4426cbec3443c936d02bd2fc795518bf6e9e4d73 Mon Sep 17 00:00:00 2001 From: Jens L Date: Tue, 25 Apr 2023 15:24:47 +0300 Subject: [PATCH] policies: clear app cache when writing user, groups, policies (#5371) Signed-off-by: Jens Langhammer --- authentik/policies/signals.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/authentik/policies/signals.py b/authentik/policies/signals.py index d48a41984..52c5ec767 100644 --- a/authentik/policies/signals.py +++ b/authentik/policies/signals.py @@ -5,7 +5,9 @@ from django.dispatch import receiver from structlog.stdlib import get_logger from authentik.core.api.applications import user_app_cache_key +from authentik.core.models import Group, User from authentik.policies.apps import GAUGE_POLICIES_CACHED +from authentik.policies.models import Policy, PolicyBinding, PolicyBindingModel from authentik.policies.types import CACHE_PREFIX from authentik.root.monitoring import monitoring_set @@ -18,12 +20,14 @@ def monitoring_set_policies(sender, **kwargs): GAUGE_POLICIES_CACHED.set(len(cache.keys(f"{CACHE_PREFIX}_*") or [])) -@receiver(post_save) +@receiver(post_save, sender=Policy) +@receiver(post_save, sender=PolicyBinding) +@receiver(post_save, sender=PolicyBindingModel) +@receiver(post_save, sender=Group) +@receiver(post_save, sender=User) def invalidate_policy_cache(sender, instance, **_): """Invalidate Policy cache when policy is updated""" - from authentik.policies.models import Policy, PolicyBinding - - if isinstance(instance, Policy): + if sender == Policy: total = 0 for binding in PolicyBinding.objects.filter(policy=instance): prefix = f"{CACHE_PREFIX}{binding.policy_binding_uuid.hex}_{binding.policy.pk.hex}*"