When a user with a token navigates to /:subdomain/login or /:subdomain/otp, they are redirected to /${subdomain}. The redirect uses replace to avoid adding a history entry.

This commit is contained in:
2026-01-15 06:26:35 +03:00
parent adc98200cb
commit 8a4e6691d4
2 changed files with 41 additions and 2 deletions

View File

@@ -0,0 +1,22 @@
import { Loader } from "components/Loader/Loader";
import { Navigate, useParams } from "react-router-dom";
import { useAppSelector } from "redux/hooks";
export const PublicRoute = ({
children,
}: {
children: JSX.Element;
}) => {
const { token, loading } = useAppSelector((state) => state.auth);
const { subdomain } = useParams();
if (loading) {
return <Loader />;
}
if (token) {
return <Navigate to={`/${subdomain}`} replace />;
}
return children;
};

View File

@@ -1,6 +1,7 @@
import { Grid } from "antd";
import { Loader } from "components/Loader/Loader";
import { PrivateRoute } from "components/privateRoute/PrivateRoute";
import { PublicRoute } from "components/publicRoute/PublicRoute";
import { AppLayout } from "layouts";
import HeaderMenuDrawer from "layouts/app/HeaderMenuDrawer";
import AddressPage from "pages/address/page";
@@ -132,13 +133,29 @@ export const router = createHashRouter([
},
{
path: "login",
element: <PageWrapper children={<LoginPage />} />,
element: (
<PageWrapper
children={
<PublicRoute>
<LoginPage />
</PublicRoute>
}
/>
),
errorElement: <ErrorPage />,
},
{
path: "otp",
element: <PageWrapper children={<OtpPage />} />,
element: (
<PageWrapper
children={
<PublicRoute>
<OtpPage />
</PublicRoute>
}
/>
),
errorElement: <ErrorPage />,
},
{