mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-07 18:31:04 +00:00
Fix rbac (#7728)
* perf: 重命名 signal handlers * fix: 修复 ticket processor 问题 * perf: 修改 ticket 处理人api * fix: 修复创建系统账号bug * fix: 升级celery_beat==2.2.1和flower==1.0.0;修改celery进程启动参数先后顺序 * perf: 修改 authentication token * fix: 修复上传权限bug * fix: 登录页面增加i18n切换; * fix: 系统角色删除限制 * perf: 修改一下 permissions tree * perf: 生成 i18n * perf: 修改一点点 Co-authored-by: ibuler <ibuler@qq.com> Co-authored-by: feng626 <1304903146@qq.com> Co-authored-by: Jiangjie.Bai <bugatti_it@163.com>
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.db.models import F, Value
|
||||
from django.db.models.functions import Concat
|
||||
|
||||
from orgs.mixins.api import OrgBulkModelViewSet
|
||||
from orgs.utils import current_org
|
||||
from common.exceptions import JMSException
|
||||
from .. import serializers
|
||||
from ..models import RoleBinding, SystemRoleBinding, OrgRoleBinding
|
||||
|
||||
@@ -22,7 +23,7 @@ class RoleBindingViewSet(OrgBulkModelViewSet):
|
||||
]
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()\
|
||||
queryset = super().get_queryset() \
|
||||
.prefetch_related('user', 'role') \
|
||||
.annotate(
|
||||
user_display=Concat(
|
||||
@@ -38,6 +39,17 @@ class SystemRoleBindingViewSet(RoleBindingViewSet):
|
||||
model = SystemRoleBinding
|
||||
serializer_class = serializers.SystemRoleBindingSerializer
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
user = instance.user
|
||||
role_qs = self.model.objects.filter(user=user)
|
||||
if role_qs.count() == 1:
|
||||
msg = _('{} at least one system role').format(user)
|
||||
raise JMSException(
|
||||
code='system_role_delete_error',
|
||||
detail=msg
|
||||
)
|
||||
super().perform_destroy(instance)
|
||||
|
||||
|
||||
class OrgRoleBindingViewSet(RoleBindingViewSet):
|
||||
model = OrgRoleBinding
|
||||
|
Reference in New Issue
Block a user