diff --git a/FrontendV2/src/App.tsx b/FrontendV2/src/App.tsx index af62ddd..7435b63 100644 --- a/FrontendV2/src/App.tsx +++ b/FrontendV2/src/App.tsx @@ -8,6 +8,7 @@ import Cookies from "js-cookie"; import { useAtom } from "jotai"; import { setIsLoggedInAtom } from "@/states/Atoms"; import { UserContext, type User } from "./states/Context"; +import { triggerLogoutAtom } from "@/states/Atoms"; const API_BASE = (import.meta as any).env?.VITE_BACKEND_URL || @@ -16,8 +17,9 @@ const API_BASE = function App() { const [user, setUser] = useState(undefined); - const [, setIsLoggedIn] = useAtom(setIsLoggedInAtom); + const [, setTriggerLogout] = useAtom(triggerLogoutAtom); + useEffect(() => { if (Cookies.get("token")) { const verifyToken = async () => { @@ -28,6 +30,7 @@ function App() { }, }); if (response.ok) { + setTriggerLogout(false); const data = await response.json(); setUser({ username: data.user.username, role: data.user.role }); setIsLoggedIn(true); diff --git a/FrontendV2/src/pages/HomePage.tsx b/FrontendV2/src/pages/HomePage.tsx index ed0454b..951eaec 100644 --- a/FrontendV2/src/pages/HomePage.tsx +++ b/FrontendV2/src/pages/HomePage.tsx @@ -1,4 +1,16 @@ import { useUserContext } from "@/states/Context"; +import { + Container, + Stack, + Heading, + Text, + Badge, + Flex, + Button, +} from "@chakra-ui/react"; +import { triggerLogoutAtom, setIsLoggedInAtom } from "@/states/Atoms"; +import { useAtom } from "jotai"; +import Cookies from "js-cookie"; export interface User { username: string; @@ -7,12 +19,56 @@ export interface User { export const HomePage = () => { const userData = useUserContext(); + const [, setTriggerLogout] = useAtom(triggerLogoutAtom); + const [, setIsLoggedIn] = useAtom(setIsLoggedInAtom); return ( -
-

Home Page

-

Welcome, {userData.username}!

-

Your role is: {userData.role}

-
+ + + + + + Home + + + + Willkommen zurück, {userData.username}! + + + Rolle: {userData.role} + + + + + + + + ); }; diff --git a/FrontendV2/src/pages/LoginPage.tsx b/FrontendV2/src/pages/LoginPage.tsx index fc4a866..1ab9f46 100644 --- a/FrontendV2/src/pages/LoginPage.tsx +++ b/FrontendV2/src/pages/LoginPage.tsx @@ -1,7 +1,7 @@ import { useState, useEffect } from "react"; import MyAlert from "../components/myChakra/MyAlert"; import { Button, Card, Field, Input, Stack } from "@chakra-ui/react"; -import { setIsLoggedInAtom } from "@/states/Atoms"; +import { setIsLoggedInAtom, triggerLogoutAtom } from "@/states/Atoms"; import { useAtom } from "jotai"; import Cookies from "js-cookie"; import { Navigate, useNavigate } from "react-router-dom"; @@ -13,6 +13,7 @@ const API_BASE = export const LoginPage = () => { const [isLoggedIn, setIsLoggedIn] = useAtom(setIsLoggedInAtom); + const [triggerLogout, setTriggerLogout] = useAtom(triggerLogoutAtom); const navigate = useNavigate(); useEffect(() => { @@ -57,6 +58,7 @@ export const LoginPage = () => { setIsError(true); return; } + setTriggerLogout(false); navigate("/", { replace: true }); }; @@ -98,9 +100,18 @@ export const LoginPage = () => { )} + + {triggerLogout && ( + + )} + diff --git a/FrontendV2/src/states/Atoms.tsx b/FrontendV2/src/states/Atoms.tsx index 5571ada..c4f3f51 100644 --- a/FrontendV2/src/states/Atoms.tsx +++ b/FrontendV2/src/states/Atoms.tsx @@ -1,4 +1,5 @@ import { atom } from "jotai"; export const testAtom = atom(0); -export const setIsLoggedInAtom = atom(false); \ No newline at end of file +export const setIsLoggedInAtom = atom(false); +export const triggerLogoutAtom = atom(false);