diff --git a/constant/route.constant.ts b/constant/route.constant.ts new file mode 100644 index 0000000..37e11a0 --- /dev/null +++ b/constant/route.constant.ts @@ -0,0 +1,4 @@ +export const routes = { + LOGIN: '/login', + PRODUCTS: '/products', +}; diff --git a/src/app/(auth)/log-in/layout.tsx b/src/app/(auth)/login/layout.tsx similarity index 100% rename from src/app/(auth)/log-in/layout.tsx rename to src/app/(auth)/login/layout.tsx diff --git a/src/app/(auth)/log-in/loginPage.module.scss b/src/app/(auth)/login/loginPage.module.scss similarity index 100% rename from src/app/(auth)/log-in/loginPage.module.scss rename to src/app/(auth)/login/loginPage.module.scss diff --git a/src/app/(auth)/log-in/page.tsx b/src/app/(auth)/login/page.tsx similarity index 98% rename from src/app/(auth)/log-in/page.tsx rename to src/app/(auth)/login/page.tsx index 0e3a05c..b43f488 100644 --- a/src/app/(auth)/log-in/page.tsx +++ b/src/app/(auth)/login/page.tsx @@ -19,6 +19,7 @@ import { useRouter } from "next/navigation"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "@/services/store"; import { setAuthTokens, setUserDetails } from "@/services/store/authSlice"; +import { routes } from "constant/route.constant"; const loginSchema = z.object({ username: z.string(), @@ -49,7 +50,7 @@ export default function LoginPage() { ); dispatch(setUserDetails(response)); setLoader(false) - router.push('/home'); + router.push(routes.PRODUCTS); } catch (err) { setLoader(false) setError('Invalid credentials'); diff --git a/src/app/(dashboard)/home/page.tsx b/src/app/(dashboard)/products/page.tsx similarity index 100% rename from src/app/(dashboard)/home/page.tsx rename to src/app/(dashboard)/products/page.tsx diff --git a/src/app/layout.tsx b/src/app/layout.tsx index a2554b8..977e82e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -8,6 +8,7 @@ import store from "@/services/store"; import AuthGuard from "@/hoc/authGuard/authGuard"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; +import { routes } from "constant/route.constant"; interface RootLayoutProps { children: React.ReactNode; @@ -21,9 +22,9 @@ function RootLayout(props: RootLayoutProps): JSX.Element { const token = localStorage.getItem('token'); if (!token) { - router.push('/log-in'); + router.push(routes.LOGIN); } else { - router.replace('/home'); + router.replace(routes.PRODUCTS); } }, [router]) return ( diff --git a/src/components/wrapper/dashboardWrapper.tsx b/src/components/wrapper/dashboardWrapper.tsx index 53aaac8..fe0488c 100644 --- a/src/components/wrapper/dashboardWrapper.tsx +++ b/src/components/wrapper/dashboardWrapper.tsx @@ -22,6 +22,7 @@ import { BUILDING, GEAR } from "@/utilities/svgConstant"; import LogoutIcon from "@mui/icons-material/Logout"; import { useRouter } from "next/navigation"; import { useSelector } from "react-redux"; +import { routes } from "constant/route.constant"; const drawerWidth = 260; @@ -133,7 +134,7 @@ export default function DashboardWrapper(props: Props) { const logoutHandler = () => { localStorage.removeItem("token"); localStorage.removeItem("refreshToken"); - router.push("/log-in"); + router.push(routes.LOGIN); }; return ( diff --git a/src/hoc/authGuard/authGuard.tsx b/src/hoc/authGuard/authGuard.tsx index e575a16..20f53fe 100644 --- a/src/hoc/authGuard/authGuard.tsx +++ b/src/hoc/authGuard/authGuard.tsx @@ -1,4 +1,5 @@ "use client" +import { routes } from 'constant/route.constant'; // hoc/withAuth.tsx import { useRouter } from 'next/navigation'; import { useEffect } from 'react'; @@ -10,7 +11,7 @@ const AuthGuard = (WrappedComponent: any) => { useEffect(() => { const token = localStorage.getItem('token'); if (!token) { - router.push('/log-in'); + router.push(routes.LOGIN); } }, [router]); diff --git a/src/services/axios/axiosInstance.ts b/src/services/axios/axiosInstance.ts index 3fe3d38..540a886 100644 --- a/src/services/axios/axiosInstance.ts +++ b/src/services/axios/axiosInstance.ts @@ -1,5 +1,6 @@ // axiosInstance.ts import axios from 'axios'; +import { routes } from 'constant/route.constant'; const axiosInstance = axios.create({ baseURL: process.env.NEXT_PUBLIC_API_URL, @@ -55,7 +56,7 @@ axiosInstance.interceptors.response.use( const refreshToken = localStorage.getItem('refreshToken'); if (!refreshToken) { - window.location.href = '/log-in'; + window.location.href = routes.LOGIN; return Promise.reject(error); } @@ -74,7 +75,7 @@ axiosInstance.interceptors.response.use( processQueue(err, null); localStorage.removeItem('token'); localStorage.removeItem('refreshToken'); - window.location.href = '/login'; + window.location.href = routes.LOGIN; return Promise.reject(err); } finally { isRefreshing = false;