From d7c4520a65a16b6cc6e040bbdb3f2a6b72de3f23 Mon Sep 17 00:00:00 2001 From: hex2077 Date: Mon, 25 Aug 2025 23:19:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=99=BB=E5=BD=95):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=87=8D=E5=AE=9A=E5=90=91=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E8=B7=AF=E5=BE=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增登录API路由,处理会话检查及重定向逻辑 - 在Sidebar组件中引入路径处理函数,优化注销后的重定向路径 - 更新LoginModal组件,为社交登录添加回调URL参数 --- web/src/app/api/login/route.ts | 22 ++++++++++++++++++++++ web/src/components/LoginModal.tsx | 4 ++-- web/src/components/Sidebar.tsx | 9 +++++++-- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 web/src/app/api/login/route.ts diff --git a/web/src/app/api/login/route.ts b/web/src/app/api/login/route.ts new file mode 100644 index 0000000..2f55ac9 --- /dev/null +++ b/web/src/app/api/login/route.ts @@ -0,0 +1,22 @@ +import { NextResponse, NextRequest } from 'next/server'; +import { getSessionData } from "@/lib/server-actions"; + +export async function GET(request: NextRequest) { + const sessionData = await getSessionData(); + let baseUrl = process.env.NEXT_PUBLIC_BASE_URL || "/"; + const pathname = request.nextUrl.searchParams.get('pathname'); + if(!!pathname){ + baseUrl += pathname.replace('/',''); + } + + // 如果没有获取到 session,直接重定向到根目录 + if (!sessionData?.user) { + const url = new URL(baseUrl, request.url); + return NextResponse.redirect(url); + } + + // 创建一个 URL 对象,指向要重定向到的根目录 + const url = new URL(baseUrl, request.url); + // 返回重定向响应 + return NextResponse.redirect(url); +} \ No newline at end of file diff --git a/web/src/components/LoginModal.tsx b/web/src/components/LoginModal.tsx index 25d9c3b..2ce3f81 100644 --- a/web/src/components/LoginModal.tsx +++ b/web/src/components/LoginModal.tsx @@ -63,7 +63,7 @@ const LoginModal: FC = ({ isOpen, onClose, lang }) => {