feat: clear cache on user deactivation

This commit is contained in:
Vlad Stan
2026-02-05 12:21:01 +02:00
parent 54fdb0948c
commit 617f9c14ed
+20 -1
View File
@@ -4,10 +4,12 @@ from typing import Any
from uuid import uuid4 from uuid import uuid4
from lnbits.core.crud.extensions import get_user_active_extensions_ids from lnbits.core.crud.extensions import get_user_active_extensions_ids
from lnbits.core.crud.wallets import create_wallet, get_wallets from lnbits.core.crud.wallets import clear_wallet_cache, create_wallet, get_wallets
from lnbits.core.db import db from lnbits.core.db import db
from lnbits.core.models import UserAcls from lnbits.core.models import UserAcls
from lnbits.db import Connection, Filters, Page from lnbits.db import Connection, Filters, Page
from lnbits.helpers import sha256s
from lnbits.utils.cache import cache
from ..models import ( from ..models import (
Account, Account,
@@ -51,6 +53,7 @@ async def update_account_activation(
"user_id": user_id, "user_id": user_id,
}, },
) )
await clear_user_id_cache(user_id)
async def delete_account(user_id: str, conn: Connection | None = None) -> None: async def delete_account(user_id: str, conn: Connection | None = None) -> None:
@@ -282,6 +285,22 @@ async def get_user_access_control_lists(
return user_acls or UserAcls(id=user_id) return user_acls or UserAcls(id=user_id)
async def clear_user_id_cache(user_id: str):
user = await get_user(user_id, activated=None)
if user:
clear_user_cache(user)
def clear_user_cache(user: User):
user_cache_key: str | None = cache.pop(
f"auth:user:cache_key:{sha256s(user.id)}", None
)
if user_cache_key:
cache.pop(user_cache_key)
for wallet in user.wallets:
clear_wallet_cache(wallet)
def _activated_clause(activated: bool | None) -> str: def _activated_clause(activated: bool | None) -> str:
if activated is None: if activated is None:
return "" return ""