This commit is contained in:
61
05_react/uebungen/u17_validator/src/routes/Router.jsx
Normal file
61
05_react/uebungen/u17_validator/src/routes/Router.jsx
Normal file
@@ -0,0 +1,61 @@
|
||||
import { Routes, Route, Navigate } from 'react-router-dom';
|
||||
|
||||
import About from '../pages/AboutPage';
|
||||
import Home from '../pages/HomePage';
|
||||
import Contact from '../pages/ContactPage';
|
||||
import UserProfilePage from '../pages/UserProfilePage';
|
||||
import UserPage from '../pages/UserPage';
|
||||
|
||||
// Prinzip einer geschützen Route-Komponente
|
||||
|
||||
const checkAuth = () => {
|
||||
// localStorage.setItem('token', 'secret-token');
|
||||
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 = (props) => {
|
||||
// const { } = props;
|
||||
|
||||
return (
|
||||
<Routes>
|
||||
{/* Static Routes */}
|
||||
<Route path="/" element={<Home />} />
|
||||
<Route path="/about" element={<About />} />
|
||||
<Route path="/contact" element={<Contact />} />
|
||||
|
||||
{/* Dynamic Routes */}
|
||||
<Route path="/flights/:from/:to" element={<h2>Flights</h2>} />
|
||||
<Route path="/user/:userId" element={<UserProfilePage />} />
|
||||
|
||||
{/* Nested Routes | Verschachtelte Routen */}
|
||||
<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>
|
||||
|
||||
{/* Protected Routes | Geschützte Routen */}
|
||||
<Route
|
||||
path="/protected"
|
||||
element={
|
||||
<ProtectedRoute redirectTo="/">
|
||||
<div className="container py-5">
|
||||
<h2>Admin Dashboard Page</h2>
|
||||
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ad, ex?</p>
|
||||
</div>
|
||||
</ProtectedRoute>
|
||||
}></Route>
|
||||
</Routes>
|
||||
);
|
||||
};
|
||||
|
||||
export default Router;
|
||||
Reference in New Issue
Block a user