Fix user cache cleanup when operating data rules (#910)

This commit is contained in:
Wu Clan
2025-11-11 17:05:08 +08:00
committed by GitHub
parent be7b742891
commit 87a3cd8a9c
@@ -14,6 +14,7 @@ from backend.app.admin.schema.data_rule import (
from backend.common.exception import errors
from backend.common.pagination import paging_data
from backend.core.conf import settings
from backend.database.redis import redis_client
from backend.utils.import_parse import dynamic_import_data_model
@@ -113,6 +114,10 @@ class DataRuleService:
if data_rule.name != obj.name and await data_rule_dao.get_by_name(db, obj.name):
raise errors.ConflictError(msg='数据规则已存在')
count = await data_rule_dao.update(db, pk, obj)
for data_scope in await data_rule.awaitable_attrs.scopes:
for role in await data_scope.awaitable_attrs.roles:
for user in await role.awaitable_attrs.users:
await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{user.id}')
return count
@staticmethod
@@ -125,6 +130,13 @@ class DataRuleService:
:return:
"""
count = await data_rule_dao.delete(db, obj.pks)
for pk in obj.pks:
data_rule = await data_rule_dao.get(db, pk)
if data_rule:
for data_scope in await data_rule.awaitable_attrs.scopes:
for role in await data_scope.awaitable_attrs.roles:
for user in await role.awaitable_attrs.users:
await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{user.id}')
return count