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",