Skip to content

Commit 87a3cd8

Browse files
authored
Fix user cache cleanup when operating data rules (#910)
1 parent be7b742 commit 87a3cd8

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

backend/app/admin/service/data_rule_service.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from backend.common.exception import errors
1515
from backend.common.pagination import paging_data
1616
from backend.core.conf import settings
17+
from backend.database.redis import redis_client
1718
from backend.utils.import_parse import dynamic_import_data_model
1819

1920

@@ -113,6 +114,10 @@ async def update(*, db: AsyncSession, pk: int, obj: UpdateDataRuleParam) -> int:
113114
if data_rule.name != obj.name and await data_rule_dao.get_by_name(db, obj.name):
114115
raise errors.ConflictError(msg='数据规则已存在')
115116
count = await data_rule_dao.update(db, pk, obj)
117+
for data_scope in await data_rule.awaitable_attrs.scopes:
118+
for role in await data_scope.awaitable_attrs.roles:
119+
for user in await role.awaitable_attrs.users:
120+
await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{user.id}')
116121
return count
117122

118123
@staticmethod
@@ -125,6 +130,13 @@ async def delete(*, db: AsyncSession, obj: DeleteDataRuleParam) -> int:
125130
:return:
126131
"""
127132
count = await data_rule_dao.delete(db, obj.pks)
133+
for pk in obj.pks:
134+
data_rule = await data_rule_dao.get(db, pk)
135+
if data_rule:
136+
for data_scope in await data_rule.awaitable_attrs.scopes:
137+
for role in await data_scope.awaitable_attrs.roles:
138+
for user in await role.awaitable_attrs.users:
139+
await redis_client.delete(f'{settings.JWT_USER_REDIS_PREFIX}:{user.id}')
128140
return count
129141

130142

0 commit comments

Comments
 (0)