perf: Connect methods acl allow accept action

This commit is contained in:
wangruidong
2025-09-02 17:22:36 +08:00
committed by 老广
parent ae9956ff91
commit 4f79abe678
4 changed files with 32 additions and 60 deletions

View File

@@ -240,9 +240,17 @@ class ConnectMethodUtil:
def get_user_allowed_connect_methods(cls, os, user):
from acls.models import ConnectMethodACL
methods = cls.get_filtered_protocols_connect_methods(os)
acls = ConnectMethodACL.get_user_acls(user)
disabled_connect_methods = acls.values_list('connect_methods', flat=True)
disabled_connect_methods = set(itertools.chain.from_iterable(disabled_connect_methods))
accept_methods = set(itertools.chain.from_iterable(
ConnectMethodACL.get_user_acls(user)
.filter(action=ConnectMethodACL.ActionChoices.accept)
.values_list('connect_methods', flat=True)
))
# 在禁用的基础上放行一些连接方法
disabled_connect_methods = set(itertools.chain.from_iterable(
ConnectMethodACL.get_user_acls(user)
.filter(action=ConnectMethodACL.ActionChoices.reject)
.values_list('connect_methods', flat=True)
)) - accept_methods
new_queryset = {}
for protocol, methods in methods.items():