Просмотр исходного кода

try fixing the pages

reset-do-picking-order
PC-20260115JRSN\Administrator 1 неделю назад
Родитель
Сommit
edd947c227
3 измененных файлов: 22 добавлений и 15 удалений
  1. +1
    -4
      src/app/layout.tsx
  2. +20
    -10
      src/components/LoginPage/LoginRedirectIfAuthenticated.tsx
  3. +1
    -1
      src/routes.ts

+ 1
- 4
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 (
<html lang={lang}>
<body>
<SessionProviderWrapper>
<ThemeRegistry lang={lang}>{children}</ThemeRegistry>
</SessionProviderWrapper>
<ThemeRegistry lang={lang}>{children}</ThemeRegistry>
</body>
</html>
);


+ 20
- 10
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}</>;
}

+ 1
- 1
src/routes.ts Просмотреть файл

@@ -1,9 +1,9 @@
export const PRIVATE_ROUTES = [
"/analytics",
"/dashboard",
"/dashboard",
"/testing",
"/ps",
"/bagPrint",
"/report",
"/invoice",
"/projects",


Загрузка…
Отмена
Сохранить