From 7e0f482bada9d9688555d1646b08524694dafaef Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 27 Apr 2026 20:24:19 +0800 Subject: [PATCH] fix: guard dulupay checkout for guests --- app/(chat)/page.tsx | 2 +- app/api/payment/dulupay/create/route.ts | 4 ++-- components/home/lovart-home.tsx | 7 ++++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/(chat)/page.tsx b/app/(chat)/page.tsx index baa95192b..3a643d47b 100644 --- a/app/(chat)/page.tsx +++ b/app/(chat)/page.tsx @@ -72,7 +72,7 @@ async function NewChatPage() { } : null } - isAuthenticated={Boolean(session?.user)} + isAuthenticated={Boolean(session?.user && session.user.type !== "guest")} siteName={siteSettings.siteName || "AI Chatbot"} siteLogo={siteSettings.siteLogo || ""} siteLogoDark={siteSettings.siteLogoDark || ""} diff --git a/app/api/payment/dulupay/create/route.ts b/app/api/payment/dulupay/create/route.ts index 08ba734d9..5dba9236b 100644 --- a/app/api/payment/dulupay/create/route.ts +++ b/app/api/payment/dulupay/create/route.ts @@ -32,8 +32,8 @@ function buildOutTradeNo() { export async function POST(request: NextRequest) { try { const session = await auth(); - if (!session?.user?.id) { - return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); + if (!session?.user?.id || session.user.type === "guest") { + return NextResponse.json({ error: "请先登录正式账号后再充值" }, { status: 401 }); } const body = createSchema.parse(await request.json()); diff --git a/components/home/lovart-home.tsx b/components/home/lovart-home.tsx index 1b3371221..08c6cbe1b 100644 --- a/components/home/lovart-home.tsx +++ b/components/home/lovart-home.tsx @@ -1147,7 +1147,7 @@ export function LovartHome({ }; const handleCreateDulupayOrder = async (packageId: string) => { - if (!isAuthenticated) { + if (!isAuthenticated || user?.type === "guest") { openLoginDialog(); return; } @@ -1166,6 +1166,11 @@ export function LovartHome({ }); const result = await response.json(); + if (response.status === 401) { + openLoginDialog(); + throw new Error("请先登录正式账号后再充值"); + } + if (!response.ok || !result?.paymentUrl) { throw new Error(result?.error || "创建支付订单失败"); }