Files
jumpserver/apps/rbac/api/rolebinding.py
Jiangjie.Bai 03afa4f974 Fix rbac (#7713)
* fix: token 系统用户增加 protocol

* fix: 修复清除orphan session时同时清除对应的 session_task

* perf: 修改 connection token api

* fix: 修复无法获取系统角色绑定的问题

* perf: 增加 db terminal 及 magnus 组件

* perf: 修改 migrations

* fix: 修复AUTHENTICATION_BACKENDS相关的逻辑

* fix: 修改判断backend认证逻辑

* fix: 修复资产账号查看密码跳过mfa

* fix: 修复用户组授权权限错误

* feat: 支持COS对象存储

* feat: 升级依赖 jms_storage==0.0.42

* fix: 修复 koko api 问题

* feat: 修改存储翻译信息

* perf: 修改 ticket 权限

* fix: 修复获取资产授权系统用户 get_queryset

* perf: 抽取 ticket

* perf: 修改 cmd filter 的权限

* fix: 修改 ticket perm

* fix: 修复oidc依赖问题

Co-authored-by: Eric <xplzv@126.com>
Co-authored-by: ibuler <ibuler@qq.com>
Co-authored-by: 小冯 <xiaofeng@xiaofengdeMacBook-Pro.local>
Co-authored-by: feng626 <1304903146@qq.com>
2022-02-28 19:28:58 +08:00

56 lines
1.7 KiB
Python

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 .. import serializers
from ..models import RoleBinding, SystemRoleBinding, OrgRoleBinding
__all__ = ['RoleBindingViewSet', 'SystemRoleBindingViewSet', 'OrgRoleBindingViewSet']
class RoleBindingViewSet(OrgBulkModelViewSet):
model = RoleBinding
serializer_class = serializers.RoleBindingSerializer
filterset_fields = [
'scope', 'user', 'role', 'org',
'user__name', 'user__username', 'role__name'
]
search_fields = [
'user__name', 'user__username', 'role__name'
]
def get_queryset(self):
queryset = super().get_queryset()\
.prefetch_related('user', 'role') \
.annotate(
user_display=Concat(
F('user__name'), Value('('),
F('user__username'), Value(')')
),
role_display=F('role__name')
)
return queryset
class SystemRoleBindingViewSet(RoleBindingViewSet):
model = SystemRoleBinding
serializer_class = serializers.SystemRoleBindingSerializer
class OrgRoleBindingViewSet(RoleBindingViewSet):
model = OrgRoleBinding
serializer_class = serializers.OrgRoleBindingSerializer
def perform_bulk_create(self, serializer):
validated_data = serializer.validated_data
bindings = [
OrgRoleBinding(
role=d['role'], user=d['user'],
org_id=current_org.id, scope='org'
)
for d in validated_data
]
OrgRoleBinding.objects.bulk_create(bindings, ignore_conflicts=True)