23 lines
960 B
TypeScript
23 lines
960 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { getActiveAccountId } from "@/lib/account-context";
|
|
import { assertAccountOwnedByUser } from "@/lib/auth/accounts";
|
|
import { apiRouteErrorResponse } from "@/lib/auth/api";
|
|
import { requireSessionUser } from "@/lib/auth/session";
|
|
import { clearThreadsAuthForAccount } from "@/lib/threads-api";
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
const user = await requireSessionUser();
|
|
const body = (await request.json().catch(() => ({}))) as { accountId?: string };
|
|
const accountId = body.accountId ?? (await getActiveAccountId());
|
|
if (!accountId) {
|
|
return NextResponse.json({ error: "沒有可中斷的帳號" }, { status: 400 });
|
|
}
|
|
await assertAccountOwnedByUser(user.id, accountId);
|
|
await clearThreadsAuthForAccount(accountId);
|
|
return NextResponse.json({ success: true });
|
|
} catch (error) {
|
|
return apiRouteErrorResponse(error, "threads/disconnect");
|
|
}
|
|
}
|