def cache_clear(self, request: Request) -> Response: """Clear policy cache""" keys = cache.keys("policy_*") cache.delete_many(keys) LOGGER.debug("Cleared Policy cache", keys=len(keys)) # Also delete user application cache keys = cache.keys(user_app_cache_key("*")) cache.delete_many(keys) return Response(status=204)
def post_save_application(sender: type[Model], instance, created: bool, **_): """Clear user's application cache upon application creation""" from authentik.core.api.applications import user_app_cache_key from authentik.core.models import Application if sender != Application: return if not created: # pragma: no cover return # Also delete user application cache keys = cache.keys(user_app_cache_key("*")) cache.delete_many(keys)
def invalidate_policy_cache(sender, instance, **_): """Invalidate Policy cache when policy is updated""" from authentik.policies.models import Policy, PolicyBinding if isinstance(instance, Policy): total = 0 for binding in PolicyBinding.objects.filter(policy=instance): prefix = f"policy_{binding.policy_binding_uuid.hex}_{binding.policy.pk.hex}*" keys = cache.keys(prefix) total += len(keys) cache.delete_many(keys) LOGGER.debug("Invalidating policy cache", policy=instance, keys=total) # Also delete user application cache keys = cache.keys(user_app_cache_key("*")) or [] cache.delete_many(keys)
def post_save_application(sender: type[Model], instance, created: bool, **_): """Clear user's application cache upon application creation""" from authentik.core.api.applications import user_app_cache_key from authentik.core.models import Application GAUGE_MODELS.labels( model_name=sender._meta.model_name, app=sender._meta.app_label, ).set(sender.objects.count()) if sender != Application: return if not created: # pragma: no cover return # Also delete user application cache keys = cache.keys(user_app_cache_key("*")) cache.delete_many(keys)