/home/techb158/balavpn.abdallabala.com/src/app/api/workspaces/[workspaceId]
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);
}
}