/home/techb158/balavpn.abdallabala.com/src/app/api/workspaces/[workspaceId]
NameSizeModeActions
integration-mappings/-0755rm
integrations/-0755rm
projects/-0755rm
sync-runs/-0755rm
route.js12800644editdlrm
Edit: /home/techb158/balavpn.abdallabala.com/src/app/api/workspaces/[workspaceId]/route.js (1280B)
const { prisma } = require("../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../lib/request-context"); const { hasPermission } = require("../../../../domain/permissions"); const { jsonResponse, errorResponse, parseJson } = require("../../../../lib/http"); export async function PATCH(request, { params }) { try { const { workspaceId } = await params; const actor = await getActorFromRequest(request); const workspace = await prisma.workspace.findUniqueOrThrow({ where: { id: workspaceId } }); const membership = actor.memberships.find(item => item.organizationId === workspace.organizationId && item.status === "ACTIVE"); if (!membership || !hasPermission(membership.role.permissions, "workspace:manage")) { const error = new Error("Permission denied: workspace:manage"); error.status = 403; throw error; } const body = await parseJson(request); const updated = await prisma.workspace.update({ where: { id: workspaceId }, data: { name: body.name ?? workspace.name, status: body.status ?? workspace.status, type: body.type ?? workspace.type } }); return jsonResponse({ workspace: updated }); } catch (error) { return errorResponse(error); } }