feat(console): add support actions (#33492)

This commit is contained in:
Victor Navarro 2026-06-24 12:06:51 +02:00 committed by GitHub
commit ad3651d8f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 255 additions and 156 deletions

View file

@ -0,0 +1,26 @@
import type { APIEvent } from "@solidjs/start/server"
import { Referral } from "@opencode-ai/console-core/referral.js"
import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
import { Resource } from "@opencode-ai/console-resource"
import z from "zod"
const Body = z.object({
inviterWorkspaceID: z.string().startsWith("wrk_"),
inviteeWorkspaceID: z.string().startsWith("wrk_"),
})
export async function POST(event: APIEvent) {
if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
return Response.json({ error: "Unauthorized" }, { status: 401 })
}
const body = Body.safeParse(await event.request.json().catch(() => undefined))
if (!body.success) {
return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
}
return Referral.create(body.data)
.then((result) => Response.json({ success: true, message: "Referral created", result }))
.catch((error) =>
Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }),
)
}

View file

@ -0,0 +1,23 @@
import type { APIEvent } from "@solidjs/start/server"
import { Account } from "@opencode-ai/console-core/account.js"
import { safeEqual } from "@opencode-ai/console-core/util/crypto.js"
import { Resource } from "@opencode-ai/console-resource"
import z from "zod"
const Body = z.object({ email: z.email() })
export async function DELETE(event: APIEvent) {
if (!safeEqual(event.request.headers.get("authorization") ?? "", `Bearer ${Resource.SUPPORT_API_KEY.value}`)) {
return Response.json({ error: "Unauthorized" }, { status: 401 })
}
const body = Body.safeParse(await event.request.json().catch(() => undefined))
if (!body.success) {
return Response.json({ error: "Invalid request", issues: body.error.issues }, { status: 400 })
}
return Account.remove(body.data.email)
.then(() => Response.json({ success: true, message: "Account deleted" }))
.catch((error) =>
Response.json({ error: error instanceof Error ? error.message : String(error) }, { status: 400 }),
)
}