/
home
/
techb158
/
balavpn.abdallabala.com
/
src
/
app
/
api
/
integrations
/
[integrationId]
/
/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]
mkdir
upload
Name
Size
Mode
Actions
discover/
-
0755
rm
live/
-
0755
rm
sync/
-
0755
rm
route.js
2476
0644
edit
dl
rm
Edit:
/home/techb158/balavpn.abdallabala.com/src/app/api/integrations/[integrationId]/route.js
(2476B)
const { prisma } = require("../../../../lib/prisma"); const { getActorFromRequest } = require("../../../../lib/request-context"); const { hasPermission } = require("../../../../domain/permissions"); const { jsonResponse, errorResponse, parseJson } = require("../../../../lib/http"); const { getIntegration, updateIntegration, deleteIntegration } = require("../../../../services/integration-service"); async function requireIntegrationAccess(request, integrationId, permission) { const actor = await getActorFromRequest(request); const integration = await prisma.integration.findUnique({ where: { id: integrationId }, include: { workspace: true } }); if (!integration) { const error = new Error(`Integration not found: ${integrationId}`); error.status = 404; throw error; } const membership = actor.memberships.find(m => m.organizationId === integration.workspace.organizationId && m.status === "ACTIVE"); if (!membership || !hasPermission(membership.role.permissions, permission)) { const error = new Error(`Permission denied: ${permission}`); error.status = 403; throw error; } return { actor, integration }; } export async function GET(request, { params }) { try { const { integrationId } = await params; await requireIntegrationAccess(request, integrationId, "integration:read"); const integration = await getIntegration(integrationId); return jsonResponse({ integration }); } catch (error) { return errorResponse(error); } } export async function PATCH(request, { params }) { try { const { integrationId } = await params; const { actor } = await requireIntegrationAccess(request, integrationId, "integration:manage"); const body = await parseJson(request); if (body.clearSyncRuns) { await prisma.integrationSyncRun.deleteMany({ where: { integrationId } }); return jsonResponse({ cleared: true }); } const integration = await updateIntegration(integrationId, body, actor, request); return jsonResponse({ integration }); } catch (error) { return errorResponse(error); } } export async function DELETE(request, { params }) { try { const { integrationId } = await params; const { actor } = await requireIntegrationAccess(request, integrationId, "integration:manage"); const result = await deleteIntegration(integrationId, actor, request); return jsonResponse(result); } catch (error) { return errorResponse(error); } }
Save
cmd:
run