From edd947c22753be62c2bd7ee7d06104b7027737e0 Mon Sep 17 00:00:00 2001 From: "PC-20260115JRSN\\Administrator" Date: Thu, 12 Mar 2026 12:36:03 +0800 Subject: [PATCH] try fixing the pages --- src/app/layout.tsx | 5 +--- .../LoginRedirectIfAuthenticated.tsx | 30 ++++++++++++------- src/routes.ts | 2 +- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 26b47e0..027afb7 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,7 +3,6 @@ import type { Metadata, Viewport } from "next"; // import ThemeRegistry from "@/theme/ThemeRegistry"; import { detectLanguage } from "../i18n"; import ThemeRegistry from "../theme/ThemeRegistry"; -import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper"; export const metadata: Metadata = { title: "FPSMS", @@ -28,9 +27,7 @@ export default async function RootLayout({ return ( - - {children} - + {children} ); diff --git a/src/components/LoginPage/LoginRedirectIfAuthenticated.tsx b/src/components/LoginPage/LoginRedirectIfAuthenticated.tsx index a2ae5b4..627d6fa 100644 --- a/src/components/LoginPage/LoginRedirectIfAuthenticated.tsx +++ b/src/components/LoginPage/LoginRedirectIfAuthenticated.tsx @@ -1,13 +1,14 @@ "use client"; -import { useSession } from "next-auth/react"; +import { getSession } from "next-auth/react"; import { useSearchParams } from "next/navigation"; import { useRouter } from "next/navigation"; -import { useEffect, type ReactNode } from "react"; +import { useEffect, useState, type ReactNode } from "react"; /** * Client-side only: redirect to "/" when user is authenticated and this page - * was not opened after a 401 (session=expired). Relies on useSearchParams() so + * was not opened after a 401 (session=expired). Uses getSession() so it works + * without SessionProvider (login page is outside (main)). useSearchParams() so * it works in production where server searchParams can be undefined. */ export default function LoginRedirectIfAuthenticated({ @@ -15,17 +16,26 @@ export default function LoginRedirectIfAuthenticated({ }: { children: ReactNode; }) { - const { status } = useSession(); const searchParams = useSearchParams(); const router = useRouter(); + const [checked, setChecked] = useState(false); useEffect(() => { - if (status !== "authenticated") return; - const sessionExpired = searchParams.get("session") === "expired"; - if (!sessionExpired) { - router.replace("/"); - } - }, [status, searchParams, router]); + let cancelled = false; + getSession().then((session) => { + if (cancelled) return; + setChecked(true); + if (!session) return; + const sessionExpired = searchParams.get("session") === "expired"; + if (!sessionExpired) { + router.replace("/"); + } + }); + return () => { + cancelled = true; + }; + }, [searchParams, router]); + if (!checked) return <>{children}; return <>{children}; } diff --git a/src/routes.ts b/src/routes.ts index bff37ed..8fdb887 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -1,9 +1,9 @@ export const PRIVATE_ROUTES = [ "/analytics", "/dashboard", - "/dashboard", "/testing", "/ps", + "/bagPrint", "/report", "/invoice", "/projects",