From 8a4e6691d477b3ba357c1e066bb2ec8af20242c8 Mon Sep 17 00:00:00 2001 From: Mohammed Al-yaseen Date: Thu, 15 Jan 2026 06:26:35 +0300 Subject: [PATCH] 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. --- src/components/publicRoute/PublicRoute.tsx | 22 ++++++++++++++++++++++ src/routes/routes.tsx | 21 +++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/components/publicRoute/PublicRoute.tsx diff --git a/src/components/publicRoute/PublicRoute.tsx b/src/components/publicRoute/PublicRoute.tsx new file mode 100644 index 0000000..c6a6ac4 --- /dev/null +++ b/src/components/publicRoute/PublicRoute.tsx @@ -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 ; + } + + if (token) { + return ; + } + + return children; +}; diff --git a/src/routes/routes.tsx b/src/routes/routes.tsx index eea3eb2..d71ea4e 100644 --- a/src/routes/routes.tsx +++ b/src/routes/routes.tsx @@ -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: } />, + element: ( + + + + } + /> + ), errorElement: , }, { path: "otp", - element: } />, + element: ( + + + + } + /> + ), errorElement: , }, {