mirror of https://github.com/jumpserver/jumpserver
perf: 生产授权树
parent
afdf777386
commit
8cf900f9de
|
@ -448,6 +448,17 @@ platforms_data_json = '''[
|
||||||
"required": false,
|
"required": false,
|
||||||
"default": false,
|
"default": false,
|
||||||
"setting": {}
|
"setting": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "winrm",
|
||||||
|
"port": 5985,
|
||||||
|
"primary": false,
|
||||||
|
"public": false,
|
||||||
|
"required": false,
|
||||||
|
"default": false,
|
||||||
|
"setting": {
|
||||||
|
"use_ssl": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -506,6 +517,17 @@ platforms_data_json = '''[
|
||||||
"required": false,
|
"required": false,
|
||||||
"default": false,
|
"default": false,
|
||||||
"setting": {}
|
"setting": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "winrm",
|
||||||
|
"port": 5985,
|
||||||
|
"primary": false,
|
||||||
|
"public": false,
|
||||||
|
"required": false,
|
||||||
|
"default": false,
|
||||||
|
"setting": {
|
||||||
|
"use_ssl": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -564,6 +586,17 @@ platforms_data_json = '''[
|
||||||
"required": false,
|
"required": false,
|
||||||
"default": false,
|
"default": false,
|
||||||
"setting": {}
|
"setting": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "winrm",
|
||||||
|
"port": 5985,
|
||||||
|
"primary": false,
|
||||||
|
"public": false,
|
||||||
|
"required": false,
|
||||||
|
"default": false,
|
||||||
|
"setting": {
|
||||||
|
"use_ssl": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -615,6 +648,17 @@ platforms_data_json = '''[
|
||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "winrm",
|
||||||
|
"port": 5985,
|
||||||
|
"primary": false,
|
||||||
|
"public": false,
|
||||||
|
"required": false,
|
||||||
|
"default": false,
|
||||||
|
"setting": {
|
||||||
|
"use_ssl": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -30,13 +30,13 @@ class UserLoginForm(forms.Form):
|
||||||
)
|
)
|
||||||
auto_login = forms.BooleanField(
|
auto_login = forms.BooleanField(
|
||||||
required=False, initial=False,
|
required=False, initial=False,
|
||||||
widget=forms.CheckboxInput()
|
widget=forms.CheckboxInput(),
|
||||||
|
label=_('Auto login next')
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
auto_login_field = self.fields['auto_login']
|
auto_login_field = self.fields['auto_login']
|
||||||
auto_login_field.label = _("Auto login")
|
|
||||||
if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
if settings.SESSION_EXPIRE_AT_BROWSER_CLOSE:
|
||||||
auto_login_field.widget = forms.HiddenInput()
|
auto_login_field.widget = forms.HiddenInput()
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,15 @@ class UserAssetGrantedTreeNodeRelation(FamilyMixin, JMSOrgBaseModel):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_node_from_with_node(cls, user, key):
|
def get_node_from_with_node(cls, user, key):
|
||||||
|
""" 获取用户授权的节点的来源
|
||||||
|
这种情况就是因为 父节点被授权了, 找到是因为那个节点授权, 自己才会出现在授权树中
|
||||||
|
"""
|
||||||
ancestor_keys = set(cls.get_node_ancestor_keys(key, with_self=True))
|
ancestor_keys = set(cls.get_node_ancestor_keys(key, with_self=True))
|
||||||
|
# 被授权的祖先节点
|
||||||
|
# Todo 每个节点都过滤速度不慢吗 ?
|
||||||
ancestor_nodes = cls.objects.filter(user=user, node_key__in=ancestor_keys)
|
ancestor_nodes = cls.objects.filter(user=user, node_key__in=ancestor_keys)
|
||||||
for node in ancestor_nodes:
|
for node in ancestor_nodes:
|
||||||
|
# 如果是直接授权的节点
|
||||||
if node.key == key:
|
if node.key == key:
|
||||||
return node.node_from, node
|
return node.node_from, node
|
||||||
if node.node_from == cls.NodeFrom.granted:
|
if node.node_from == cls.NodeFrom.granted:
|
||||||
|
@ -107,6 +113,7 @@ class PermNode(Node):
|
||||||
user, self.key
|
user, self.key
|
||||||
)
|
)
|
||||||
self.node_from = node_from
|
self.node_from = node_from
|
||||||
|
#
|
||||||
if node:
|
if node:
|
||||||
self.granted_assets_amount = node.node_assets_amount
|
self.granted_assets_amount = node.node_assets_amount
|
||||||
|
|
||||||
|
|
|
@ -274,7 +274,7 @@ class UserPermTreeBuildUtil(object):
|
||||||
nodekey_assetid_mapper[key].update(asset_ids)
|
nodekey_assetid_mapper[key].update(asset_ids)
|
||||||
|
|
||||||
for asset_id, node_id in self.direct_asset_id_node_id_pairs:
|
for asset_id, node_id in self.direct_asset_id_node_id_pairs:
|
||||||
node_key = self.perm_nodes_id_key_mapper.get(node_id)
|
node_key = self.perm_nodes_id_key_mapper.get(str(node_id))
|
||||||
if not node_key:
|
if not node_key:
|
||||||
continue
|
continue
|
||||||
nodekey_assetid_mapper[node_key].add(asset_id)
|
nodekey_assetid_mapper[node_key].add(asset_id)
|
||||||
|
@ -345,7 +345,7 @@ class UserPermTreeBuildUtil(object):
|
||||||
@lazyproperty
|
@lazyproperty
|
||||||
def perm_nodes_id_key_mapper(self):
|
def perm_nodes_id_key_mapper(self):
|
||||||
mapper = {
|
mapper = {
|
||||||
node.id.hex: node.key
|
str(node.id): node.key
|
||||||
for key, node in self._perm_nodes_key_node_mapper.items()
|
for key, node in self._perm_nodes_key_node_mapper.items()
|
||||||
}
|
}
|
||||||
return mapper
|
return mapper
|
||||||
|
|
Loading…
Reference in New Issue