fix: 开启授权规则signal信号监听;解决授权规则变动用户授权树没有即使刷新的问题

pull/9239/head
Bai 2022-12-22 18:56:54 +08:00
parent b851fd1069
commit ab6518e60e
5 changed files with 10 additions and 7 deletions

View File

@ -103,6 +103,7 @@ def on_asset_nodes_add(instance, action, reverse, pk_set, **kwargs):
# m2m_model.objects.bulk_create(to_create) # m2m_model.objects.bulk_create(to_create)
# #
RELATED_NODE_IDS = '_related_node_ids' RELATED_NODE_IDS = '_related_node_ids'

View File

@ -10,5 +10,5 @@ class PermsConfig(AppConfig):
def ready(self): def ready(self):
super().ready() super().ready()
# from . import signal_handlers from . import signal_handlers
from . import notifications from . import notifications

View File

@ -32,6 +32,9 @@ class UserAssetGrantedTreeNodeRelation(FamilyMixin, JMSOrgBaseModel):
node_assets_amount = models.IntegerField(default=0) node_assets_amount = models.IntegerField(default=0)
comment = '' comment = ''
def __str__(self):
return f'{self.user}|{self.node}'
@property @property
def key(self): def key(self):
return self.node_key return self.node_key

View File

@ -1,2 +1,2 @@
from . import asset_permission from .asset_permission import *
from . import refresh_perms from .refresh_perms import *

View File

@ -121,9 +121,8 @@ class UserPermTreeExpireUtil(_UserPermTreeCacheMixin):
for org_id, perm_id in org_perm_ids: for org_id, perm_id in org_perm_ids:
org_perms_mapper[org_id].add(perm_id) org_perms_mapper[org_id].add(perm_id)
for org_id, perms_id in org_perms_mapper.items(): for org_id, perms_id in org_perms_mapper.items():
org_ids = [org_id]
user_ids = AssetPermission.get_all_users_for_perms(perm_ids, flat=True) user_ids = AssetPermission.get_all_users_for_perms(perm_ids, flat=True)
self.expire_perm_tree_for_users_orgs(user_ids, org_ids) self.expire_perm_tree_for_users_orgs(user_ids, [org_id])
def expire_perm_tree_for_user_group(self, user_group): def expire_perm_tree_for_user_group(self, user_group):
group_ids = [user_group.id] group_ids = [user_group.id]
@ -138,7 +137,7 @@ class UserPermTreeExpireUtil(_UserPermTreeCacheMixin):
@on_transaction_commit @on_transaction_commit
def expire_perm_tree_for_users_orgs(self, user_ids, org_ids): def expire_perm_tree_for_users_orgs(self, user_ids, org_ids):
org_ids = [str(oid) for oid in org_ids] org_ids = [str(oid) for oid in org_ids]
with self.client.pipline() as p: with self.client.pipeline() as p:
for uid in user_ids: for uid in user_ids:
cache_key = self.get_cache_key(uid) cache_key = self.get_cache_key(uid)
p.srem(cache_key, *org_ids) p.srem(cache_key, *org_ids)
@ -147,7 +146,7 @@ class UserPermTreeExpireUtil(_UserPermTreeCacheMixin):
def expire_perm_tree_for_all_user(self): def expire_perm_tree_for_all_user(self):
keys = self.client.keys(self.cache_key_all_user) keys = self.client.keys(self.cache_key_all_user)
with self.client.pipline() as p: with self.client.pipeline() as p:
for k in keys: for k in keys:
p.delete(k) p.delete(k)
p.execute() p.execute()