From 59b44094a1eea746f6f6dce0f5d225184bab5d1a Mon Sep 17 00:00:00 2001 From: Bai Date: Tue, 12 May 2026 19:13:43 +0800 Subject: [PATCH] perf: login acl review exclude reviewers contains self --- apps/acls/models/login_acl.py | 3 +++ apps/authentication/mixins.py | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/apps/acls/models/login_acl.py b/apps/acls/models/login_acl.py index 6f2e21b34..af2df1b54 100644 --- a/apps/acls/models/login_acl.py +++ b/apps/acls/models/login_acl.py @@ -20,6 +20,9 @@ class LoginACL(UserBaseACL): def is_action(self, action): return self.action == action + def is_user_in_reviewers(self, user): + return self.reviewers.filter(id=user.id).exists() + def create_confirm_ticket(self, request, user): from tickets import const from tickets.models import ApplyLoginTicket diff --git a/apps/authentication/mixins.py b/apps/authentication/mixins.py index 6c4bd03df..b201a1cf8 100644 --- a/apps/authentication/mixins.py +++ b/apps/authentication/mixins.py @@ -504,6 +504,10 @@ class AuthACLMixin: return if not acl.is_action(acl.ActionChoices.review): return + if acl.is_user_in_reviewers(user): + # 如果用户在审核人列表中,则不需要审核,直接通过 + # 避免管理员admin创建一条针对所有用户的复核规则导致admin自己也无法登录了 + return self.get_ticket_or_create(acl, user) self.check_user_login_confirm()