Login route, database compose file
This commit is contained in:
@ -5,6 +5,7 @@ import useLoginToken from "./Hooks/useLoginToken.tsx";
|
||||
import Home from "./Components/Home.tsx";
|
||||
import { BrowserRouter, Routes, Route, Link } from 'react-router-dom';
|
||||
import ProtectedRoute from "./Components/ProtectedRoute.tsx";
|
||||
import {CookiesProvider} from "react-cookie";
|
||||
|
||||
export default function App()
|
||||
{
|
||||
@ -22,16 +23,18 @@ export default function App()
|
||||
<>
|
||||
{/*<Navigation/>*/}
|
||||
|
||||
<BrowserRouter>
|
||||
<Routes>
|
||||
<Route index path="/" element={ <Home /> } />
|
||||
<Route path="login" element={ <Login setToken={setToken} /> } />
|
||||
<Route element={<ProtectedRoute user={token} setUser={setToken}/>}>
|
||||
<Route path="chat" element={ <ChatControl /> } />
|
||||
</Route>
|
||||
<Route path="*" element={ <p>Deine Mamma ist so dick, sie hat diese Seite gefressen. </p> } />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
<CookiesProvider defaultSetOptions={{ path: '/' }}>
|
||||
<BrowserRouter>
|
||||
<Routes>
|
||||
<Route index path="/" element={ <Home /> } />
|
||||
<Route path="login" element={ <Login setToken={setToken} /> } />
|
||||
<Route element={<ProtectedRoute user={token} setUser={setToken}/>}>
|
||||
<Route path="chat" element={ <ChatControl /> } />
|
||||
</Route>
|
||||
<Route path="*" element={ <p>Deine Mamma ist so dick, sie hat diese Seite gefressen. </p> } />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
</CookiesProvider>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,8 +1,54 @@
|
||||
import { Outlet } from "react-router-dom";
|
||||
import Login from "./Login.tsx";
|
||||
import { useEffect } from "react";
|
||||
import { z } from 'zod/v4';
|
||||
|
||||
const AuthValidateResult = z.object({
|
||||
id: z.string(),
|
||||
email: z.string()
|
||||
});
|
||||
|
||||
export default function ProtectedRoute({user, setUser} : {user: string | null, setUser: (user: string | null) => void})
|
||||
{
|
||||
|
||||
async function authenticateUser ()
|
||||
{
|
||||
try
|
||||
{
|
||||
console.log("Checkineasdjkf")
|
||||
const response = await fetch('/auth/validate', {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
if (!response.ok)
|
||||
{
|
||||
console.error(`Failed to validate session: ${response.status} ${response.statusText}`);
|
||||
setUser(null);
|
||||
return;
|
||||
}
|
||||
|
||||
const responseJson:unknown = await response.json();
|
||||
const parsedUser = AuthValidateResult.parse(responseJson);
|
||||
|
||||
setUser(JSON.stringify(parsedUser));
|
||||
|
||||
console.log("User authorized!")
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
console.error(e);
|
||||
setUser(null);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
void authenticateUser();
|
||||
});
|
||||
|
||||
if (user === null)
|
||||
{
|
||||
return <Login setToken={setUser}/>;
|
||||
|
||||
@ -44,7 +44,7 @@ const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_H
|
||||
env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7085';
|
||||
|
||||
// Define a list of all existing backend routes.
|
||||
const backendRoutes = ['/login', '/register', '/ephemeral_token'];
|
||||
const backendRoutes = ['/login', '/register', '/ephemeral_token', '/auth/validate'];
|
||||
|
||||
// For development, we have a node.js server running that delivers our frontend.
|
||||
// We have to configure proxies for the backend calls, so that node.js will forward them to the backend.
|
||||
|
||||
Reference in New Issue
Block a user