From 292a178d1dd21a3096428550223b54f285f45239 Mon Sep 17 00:00:00 2001 From: "Cross, Liam (UG - Comp Sci & Elec Eng)" <lc01383@surrey.ac.uk> Date: Tue, 2 Apr 2024 19:50:41 +0000 Subject: [PATCH] Ensure logged in users can't go to login or register pages --- .../ProtectedRoute/InverseProtectedRoute.tsx | 14 ++++++++++ client/src/main.tsx | 28 +++++++++++-------- 2 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 client/src/components/ProtectedRoute/InverseProtectedRoute.tsx diff --git a/client/src/components/ProtectedRoute/InverseProtectedRoute.tsx b/client/src/components/ProtectedRoute/InverseProtectedRoute.tsx new file mode 100644 index 0000000..cec52d9 --- /dev/null +++ b/client/src/components/ProtectedRoute/InverseProtectedRoute.tsx @@ -0,0 +1,14 @@ +import { Navigate, Outlet } from 'react-router-dom'; +import { useAuth } from '../../hooks/useAuth'; + +function InverseProtectedRoute() { + const { isAuth } = useAuth(); + + if (!isAuth) { + return <Outlet></Outlet> + } + + return <Navigate to={'/'}></Navigate> +} + +export default InverseProtectedRoute; diff --git a/client/src/main.tsx b/client/src/main.tsx index 6e9c4d9..bde443c 100644 --- a/client/src/main.tsx +++ b/client/src/main.tsx @@ -6,6 +6,7 @@ import Login from './components/Login/Login.tsx'; import Register from './components/Register/Register.tsx'; import Logout from './components/Logout/Logout.tsx'; import ProtectedRoute from './components/ProtectedRoute/ProtectedRoute.tsx'; +import InverseProtectedRoute from './components/ProtectedRoute/InverseProtectedRoute.tsx'; import Dashboard from './components/Dashboard/Dashboard.tsx'; import BookingQuery from './components/BookingQuery/BookingQuery.tsx'; import BookingList from './components/BookingList/BookingList.tsx'; @@ -23,21 +24,26 @@ const router = createBrowserRouter([ element: <App></App>, children: [ { - path: 'login', - element: <Login></Login> - }, - { - path: 'register', - element: <Register></Register> - }, - { - path: 'logout', - loader: LogoutUser, - element: <Logout></Logout> + element: <InverseProtectedRoute></InverseProtectedRoute>, + children: [ + { + path: 'login', + element: <Login></Login> + }, + { + path: 'register', + element: <Register></Register> + } + ] }, { element: <ProtectedRoute></ProtectedRoute>, children: [ + { + path: 'logout', + loader: LogoutUser, + element: <Logout></Logout> + }, { path: 'customer-dashboard', loader: GetCustomerDashboardData, -- GitLab