Files

8 lines
838 B
TypeScript
Raw Permalink Normal View History

2026-07-19 05:45:42 +08:00
import { NextResponse } from "next/server";
import { requireUser } from "@/lib/auth";
2026-07-19 05:51:08 +08:00
import { audit } from "@/lib/audit";
2026-07-19 13:04:49 +08:00
import { acceptSourceInvite } from "@/lib/invites";
2026-07-19 05:45:42 +08:00
import { externalUrl } from "@/lib/http";
import { requireSameOrigin } from "@/lib/security";
2026-07-19 13:04:49 +08:00
export async function POST(request: Request) { try { requireSameOrigin(request); const user = await requireUser(); const form = await request.formData(); const invite = acceptSourceInvite(user.id, String(form.get("token") || "")); audit(user.id, "source.invite.accept", "source", invite.source_id, { role: invite.role }); return NextResponse.redirect(externalUrl(request, "/dashboard?source=joined")); } catch (error) { return NextResponse.redirect(externalUrl(request, "/dashboard?error=" + encodeURIComponent(error instanceof Error ? error.message : "invite"))); } }