This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { Navigate, Route, Routes } from 'react-router-dom';
|
||||
//import { createBrowserRouter, RouterProvider } from 'react-router-dom';
|
||||
|
||||
// Pages Komponenten
|
||||
import HomePage from '../pages/HomePage';
|
||||
import AboutPage from '../pages/AboutPage';
|
||||
import ContactPage from '../pages/ContactPage';
|
||||
import UserProfilePage from '../pages/UserProfilePage';
|
||||
import UserPage from '../pages/UserPage';
|
||||
import ApiPage from '../pages/ApiPage';
|
||||
import JokePage from '../pages/JokePage';
|
||||
|
||||
// import Layout from '../layouts/Layout';
|
||||
|
||||
// Alternative Definition von Routes über "createBrowserRouter" mit Objekten
|
||||
// const router = createBrowserRouter([
|
||||
// { path: '/', element: <HomePage /> },
|
||||
// { path: '/about', element: <AboutPage /> },
|
||||
// { path: '/contact', element: <ContactPage /> },
|
||||
// ]);
|
||||
// // App.jsx
|
||||
// <RouterProvider router={router}>{/*<App />*/}</RouterProvider>;
|
||||
|
||||
const checkAuth = () => {
|
||||
const token = localStorage.getItem('token');
|
||||
return token && token === 'secret-token' ? true : false;
|
||||
};
|
||||
|
||||
const ProtectedRoute = (props) => {
|
||||
const { redirectTo = '/', children } = props;
|
||||
|
||||
const isAuthenticated = checkAuth(); // => true | false // Authentication - Prüfung
|
||||
|
||||
return isAuthenticated ? children : <Navigate to={redirectTo} replace={true} />;
|
||||
};
|
||||
|
||||
const Router = () => {
|
||||
// const { } = props;
|
||||
|
||||
return (
|
||||
<Routes>
|
||||
{/* Static Routes */}
|
||||
<Route path="/" element={<HomePage />} />
|
||||
<Route path="/about" element={<AboutPage />} />
|
||||
<Route path="/contact" element={<ContactPage />} />
|
||||
<Route path="/api" element={<ApiPage />} />
|
||||
<Route path="/joke" element={<JokePage />} />
|
||||
|
||||
{/* Dynamic Routes */}
|
||||
<Route path="/flights/:from/:to" element={<h2>Flights</h2>} />
|
||||
<Route path="/user/:userId" element={<UserProfilePage />} />
|
||||
|
||||
{/* Nested Routes */}
|
||||
{/* <Route path="/" element={<Layout />}>
|
||||
<Route index element={<HomePage />} />
|
||||
<Route path="about" element={<AboutPage />} />
|
||||
<Route path="contact" element={<ContactPage />} />
|
||||
</Route> */}
|
||||
|
||||
<Route path="/user" element={<UserPage />}>
|
||||
<Route index element={<h5>Index</h5>} />
|
||||
<Route path="profile" element={<h5>Profile</h5>} />
|
||||
<Route path="dashboard" element={<h5>Dashboard</h5>} />
|
||||
<Route path="settings" element={<h5>Settings</h5>} />
|
||||
</Route>
|
||||
|
||||
{/* Protected Routes | Geschützte Routen */}
|
||||
<Route
|
||||
path="/protected"
|
||||
element={
|
||||
<ProtectedRoute redirectTo="/">
|
||||
<div className="page-admin-dashboard container py-5">
|
||||
<h2>Admin Dashboard Page</h2>
|
||||
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero atque eveniet hic temporibus</p>
|
||||
</div>
|
||||
</ProtectedRoute>
|
||||
}></Route>
|
||||
</Routes>
|
||||
);
|
||||
};
|
||||
export default Router;
|
||||
Reference in New Issue
Block a user