diff --git a/engine/apps/oss_installation/serializers/cloud_user.py b/engine/apps/oss_installation/serializers/cloud_user.py index d8e35791..52f2d0e0 100644 --- a/engine/apps/oss_installation/serializers/cloud_user.py +++ b/engine/apps/oss_installation/serializers/cloud_user.py @@ -12,7 +12,7 @@ class CloudUserSerializer(serializers.ModelSerializer): class Meta: model = User - fields = ["sync_data"] + fields = ["cloud_data"] def get_cloud_data(self, obj): link = None diff --git a/engine/apps/oss_installation/urls.py b/engine/apps/oss_installation/urls.py index 25708249..9ff5efc2 100644 --- a/engine/apps/oss_installation/urls.py +++ b/engine/apps/oss_installation/urls.py @@ -1,19 +1,14 @@ -from django.urls import path +from django.urls import include, path -from common.api_helpers.optional_slash_router import optional_slash_path +from common.api_helpers.optional_slash_router import OptionalSlashRouter, optional_slash_path from .views import CloudConnectionView, CloudUsersView, CloudUserView +router = OptionalSlashRouter() +router.register("cloud_users", CloudUserView, basename="cloud-users") + urlpatterns = [ + path("", include(router.urls)), optional_slash_path("cloud_users", CloudUsersView.as_view(), name="cloud-users-list"), - path( - "cloud_users/", - CloudUserView.as_view( - { - "get": "retrieve", - } - ), - name="cloud-user-detail", - ), optional_slash_path("cloud_connection", CloudConnectionView.as_view(), name="cloud-connection-status"), ] diff --git a/engine/apps/oss_installation/views/cloud_users.py b/engine/apps/oss_installation/views/cloud_users.py index ab28c677..5f6cc67f 100644 --- a/engine/apps/oss_installation/views/cloud_users.py +++ b/engine/apps/oss_installation/views/cloud_users.py @@ -7,7 +7,7 @@ from rest_framework.response import Response from rest_framework.views import APIView import apps.oss_installation.constants as cloud_constants -from apps.api.permissions import ActionPermission, IsAdmin, IsOwnerOrAdmin +from apps.api.permissions import ActionPermission, AnyRole, IsAdmin, IsOwnerOrAdmin from apps.auth_token.auth import PluginAuthentication from apps.oss_installation.models import CloudConnector, CloudUserIdentity from apps.oss_installation.serializers import CloudUserSerializer @@ -81,8 +81,12 @@ class CloudUserView( authentication_classes = (PluginAuthentication,) permission_classes = (IsAuthenticated, ActionPermission) + action_permissions = { + AnyRole: ("retrieve",), + IsAdmin: ("sync",), + } action_object_permissions = { - IsOwnerOrAdmin: ("retrieve",), + IsOwnerOrAdmin: ("retrieve", "sync"), } serializer_class = CloudUserSerializer @@ -91,7 +95,7 @@ class CloudUserView( return queryset @action(detail=True, methods=["post"]) - def sync_with_cloud(self, request, pk): + def sync(self, request, pk): user = self.get_object() connector = CloudConnector.objects.first() if connector is not None: