From 1cca9c10fb53137a4cfa731bb3939936d0d2c147 Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Tue, 8 Mar 2022 18:04:17 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9perm=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/rbac/backends.py | 5 ++++- apps/users/models/user.py | 9 --------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/apps/rbac/backends.py b/apps/rbac/backends.py index 6f0d53c49..bc9dbb56a 100644 --- a/apps/rbac/backends.py +++ b/apps/rbac/backends.py @@ -18,7 +18,10 @@ class RBACBackend(JMSBaseAuthBackend): def has_perm(self, user_obj, perm, obj=None): if not user_obj.is_active: raise PermissionDenied() - has_perm = perm in user_obj.perms + if perm == '*': + return True + perm_set = set(i.strip() for i in perm.split('|')) + has_perm = bool(perm_set & set(user_obj.perms)) if not has_perm: raise PermissionDenied() return has_perm diff --git a/apps/users/models/user.py b/apps/users/models/user.py index 04ed568c9..fec7311b7 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -806,15 +806,6 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser): return True return False - def has_perms(self, perm_list, obj=None): - """ - Return True if the user has each of the specified permissions. If - object is passed, check if the user has all required perms for it. - """ - if '*' in perm_list: - return True - return all(any(self.has_perm(perm, obj) for perm in perms.split(' | ')) for perms in perm_list) - class UserPasswordHistory(models.Model): id = models.UUIDField(default=uuid.uuid4, primary_key=True)