ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: backend enforcement workspace policy

This commit is contained in:
DCCONSTRUCTIONS
2026-05-06 09:38:14 +03:00
parent 9fa05d60b6
commit e009915e34
6 changed files with 116 additions and 0 deletions
@@ -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)