ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: backend enforcement workspace policy
This commit is contained in:
@@ -34,6 +34,7 @@ from plane.app.permissions import (
|
||||
# Module imports
|
||||
from plane.app.serializers import WorkSpaceSerializer, WorkspaceThemeSerializer
|
||||
from plane.app.views.base import BaseAPIView, BaseViewSet
|
||||
from plane.authentication.nodedc_workspace_policy import get_nodedc_workspace_creation_policy
|
||||
from plane.db.models import (
|
||||
Issue,
|
||||
IssueActivity,
|
||||
@@ -83,6 +84,17 @@ class WorkSpaceViewSet(BaseViewSet):
|
||||
|
||||
def create(self, request):
|
||||
try:
|
||||
workspace_policy = get_nodedc_workspace_creation_policy(request.user)
|
||||
if not workspace_policy["can_create_workspace"]:
|
||||
return Response(
|
||||
{
|
||||
"error": "nodedc_workspace_creation_denied",
|
||||
"reason": workspace_policy["reason"],
|
||||
"workspace_policy": workspace_policy,
|
||||
},
|
||||
status=status.HTTP_403_FORBIDDEN,
|
||||
)
|
||||
|
||||
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value(
|
||||
[
|
||||
{
|
||||
@@ -243,6 +255,11 @@ class UserWorkSpacesEndpoint(BaseAPIView):
|
||||
return Response(workspaces, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class NodeDCWorkspaceCreationPolicyEndpoint(BaseAPIView):
|
||||
def get(self, request):
|
||||
return Response(get_nodedc_workspace_creation_policy(request.user), status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class WorkSpaceAvailabilityCheckEndpoint(BaseAPIView):
|
||||
def get(self, request):
|
||||
slug = request.GET.get("slug", False)
|
||||
|
||||
Reference in New Issue
Block a user