mirror of https://github.com/jumpserver/jumpserver
102 lines
3.5 KiB
Python
102 lines
3.5 KiB
Python
|
# coding: utf-8
|
||
|
#
|
||
|
|
||
|
|
||
|
from rest_framework import viewsets, generics
|
||
|
from rest_framework.pagination import LimitOffsetPagination
|
||
|
from rest_framework.views import Response
|
||
|
|
||
|
from common.permissions import IsOrgAdmin
|
||
|
|
||
|
from ..models import RemoteAppPermission
|
||
|
from ..serializers import (
|
||
|
RemoteAppPermissionSerializer,
|
||
|
RemoteAppPermissionUpdateUserSerializer,
|
||
|
RemoteAppPermissionUpdateRemoteAppSerializer,
|
||
|
)
|
||
|
|
||
|
|
||
|
__all__ = [
|
||
|
'RemoteAppPermissionViewSet',
|
||
|
'RemoteAppPermissionAddUserApi', 'RemoteAppPermissionAddRemoteAppApi',
|
||
|
'RemoteAppPermissionRemoveUserApi', 'RemoteAppPermissionRemoveRemoteAppApi',
|
||
|
]
|
||
|
|
||
|
|
||
|
class RemoteAppPermissionViewSet(viewsets.ModelViewSet):
|
||
|
filter_fields = ('name', )
|
||
|
search_fields = filter_fields
|
||
|
queryset = RemoteAppPermission.objects.all()
|
||
|
serializer_class = RemoteAppPermissionSerializer
|
||
|
pagination_class = LimitOffsetPagination
|
||
|
permission_classes = (IsOrgAdmin,)
|
||
|
|
||
|
|
||
|
class RemoteAppPermissionAddUserApi(generics.RetrieveUpdateAPIView):
|
||
|
permission_classes = (IsOrgAdmin,)
|
||
|
serializer_class = RemoteAppPermissionUpdateUserSerializer
|
||
|
queryset = RemoteAppPermission.objects.all()
|
||
|
|
||
|
def update(self, request, *args, **kwargs):
|
||
|
perm = self.get_object()
|
||
|
serializer = self.serializer_class(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
users = serializer.validated_data.get('users')
|
||
|
if users:
|
||
|
perm.users.add(*tuple(users))
|
||
|
return Response({"msg": "ok"})
|
||
|
else:
|
||
|
return Response({"error": serializer.errors})
|
||
|
|
||
|
|
||
|
class RemoteAppPermissionRemoveUserApi(generics.RetrieveUpdateAPIView):
|
||
|
permission_classes = (IsOrgAdmin,)
|
||
|
serializer_class = RemoteAppPermissionUpdateUserSerializer
|
||
|
queryset = RemoteAppPermission.objects.all()
|
||
|
|
||
|
def update(self, request, *args, **kwargs):
|
||
|
perm = self.get_object()
|
||
|
serializer = self.serializer_class(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
users = serializer.validated_data.get('users')
|
||
|
if users:
|
||
|
perm.users.remove(*tuple(users))
|
||
|
return Response({"msg": "ok"})
|
||
|
else:
|
||
|
return Response({"error": serializer.errors})
|
||
|
|
||
|
|
||
|
class RemoteAppPermissionAddRemoteAppApi(generics.RetrieveUpdateAPIView):
|
||
|
permission_classes = (IsOrgAdmin,)
|
||
|
serializer_class = RemoteAppPermissionUpdateRemoteAppSerializer
|
||
|
queryset = RemoteAppPermission.objects.all()
|
||
|
|
||
|
def update(self, request, *args, **kwargs):
|
||
|
perm = self.get_object()
|
||
|
serializer = self.serializer_class(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
remote_apps = serializer.validated_data.get('remote_apps')
|
||
|
if remote_apps:
|
||
|
perm.remote_apps.add(*tuple(remote_apps))
|
||
|
return Response({"msg": "ok"})
|
||
|
else:
|
||
|
return Response({"error": serializer.errors})
|
||
|
|
||
|
|
||
|
class RemoteAppPermissionRemoveRemoteAppApi(generics.RetrieveUpdateAPIView):
|
||
|
permission_classes = (IsOrgAdmin,)
|
||
|
serializer_class = RemoteAppPermissionUpdateRemoteAppSerializer
|
||
|
queryset = RemoteAppPermission.objects.all()
|
||
|
|
||
|
def update(self, request, *args, **kwargs):
|
||
|
perm = self.get_object()
|
||
|
serializer = self.serializer_class(data=request.data)
|
||
|
if serializer.is_valid():
|
||
|
remote_apps = serializer.validated_data.get('remote_apps')
|
||
|
if remote_apps:
|
||
|
perm.remote_apps.remove(*tuple(remote_apps))
|
||
|
return Response({"msg": "ok"})
|
||
|
else:
|
||
|
return Response({"error": serializer.errors})
|
||
|
|