perf: 添加 is_org_admin (#7644)

* fix: 修复 org members 的问题

* perf: 修改 org member

* perf: 修改 is sa

* perf: 修改 active

* perf: 修复写法

* perf: is_sa to is_service_account

Co-authored-by: ibuler <ibuler@qq.com>
This commit is contained in:
fit2bot
2022-02-18 16:25:54 +08:00
committed by GitHub
parent 48d0c7b6cc
commit 63de4e1806
7 changed files with 36 additions and 35 deletions

View File

@@ -270,9 +270,14 @@ class RoleMixin:
@lazyproperty
def is_superuser(self):
from rbac.builtin import BuiltinRole
names = [r.name for r in self.system_roles.all()]
yes = BuiltinRole.system_admin.name in names
return yes
return self.system_roles.filter(id=BuiltinRole.system_admin.id).exists()
@lazyproperty
def is_org_admin(self):
from rbac.builtin import BuiltinRole
if self.is_superuser:
return True
return self.org_roles.filter(id=BuiltinRole.org_admin.id).exists()
@property
def is_staff(self):
@@ -286,8 +291,8 @@ class RoleMixin:
def create_service_account(cls, name, comment):
app = cls.objects.create(
username=name, name=name, email='{}@local.domain'.format(name),
is_active=False, comment=comment, is_first_login=False,
created_by='System', is_app=True,
comment=comment, is_first_login=False,
created_by='System', is_service_account=True,
)
access_key = app.create_access_key()
return app, access_key
@@ -319,7 +324,7 @@ class RoleMixin:
@classmethod
def get_nature_users(cls):
return cls.objects.filter(is_app=False)
return cls.objects.filter(is_service_account=False)
@classmethod
def get_org_users(cls, org=None):
@@ -528,7 +533,7 @@ class User(AuthMixin, TokenMixin, RoleMixin, MFAMixin, AbstractUser):
default='User', max_length=10,
blank=True, verbose_name=_('Role')
)
is_app = models.BooleanField(default=False)
is_service_account = models.BooleanField(default=False, verbose_name=_("Is service account"))
avatar = models.ImageField(
upload_to="avatar", null=True, verbose_name=_('Avatar')
)