diff --git a/growbros-frontend/src/App.tsx b/growbros-frontend/src/App.tsx index 502b042c8b0635a10afa1d818afa6f7416b8487f..daed603a55677891df0cbb7ee469e510ebcc0293 100644 --- a/growbros-frontend/src/App.tsx +++ b/growbros-frontend/src/App.tsx @@ -17,9 +17,35 @@ function App() { const location = useLocation(); useEffect(() => { - const cookieThere = getCookie("jwt")==null; - console.log("Cookie is there" + cookieThere); - setIsLoggedIn(cookieThere); + const jwtCookie = getCookie("jwt"); + + if (!jwtCookie) { + // Wenn der JWT-Cookie nicht vorhanden ist + setIsLoggedIn(false); + return; + } + + // Der JWT-Cookie ist vorhanden - Überprüfe die Gültigkeit + // @ts-ignore + const tokenParts = jwtCookie.split('.'); + if (tokenParts.length !== 3) { + // Ungültiges JWT-Format (nicht genau 3 Teile) + setIsLoggedIn(false); + return; + } + + const payload = JSON.parse(atob(tokenParts[1])); + const expirationTime = payload.exp * 1000; // Umwandlung in Millisekunden + + // Überprüfe das Ablaufdatum + if (Date.now() > expirationTime) { + // JWT ist abgelaufen + setIsLoggedIn(false); + return; + } + + // JWT ist vorhanden und gültig + setIsLoggedIn(true); }, [location.pathname]); return ( diff --git a/growbros-frontend/src/components/Navbar.tsx b/growbros-frontend/src/components/Navbar.tsx index ea720e41244a6eae135ab61c900a9237aa309858..94f5d15f56e8cdefa7e87cb9d139aa93510e4e49 100644 --- a/growbros-frontend/src/components/Navbar.tsx +++ b/growbros-frontend/src/components/Navbar.tsx @@ -1,6 +1,7 @@ -import { NavLink } from "react-router-dom"; +import {NavLink} from "react-router-dom"; import "../stylesheets/Navbar.css"; import "font-awesome/css/font-awesome.min.css"; +import {deleteJwt} from "../jwt/Cookies.ts"; function Navbar() { return ( @@ -26,6 +27,9 @@ function Navbar() { <i className="fa fa-search"></i> </NavLink> </li> + <li> + <NavLink to="/" onClick={deleteJwt}>Abmelden</NavLink> + </li> </div> </ul> </nav> diff --git a/growbros-frontend/src/jwt/Cookies.ts b/growbros-frontend/src/jwt/Cookies.ts index 6ab4c56ae3f820787191e904b9c70a6741af0cfb..5d6eb3eb56004aa898aed0323ac40bfe3b172b44 100644 --- a/growbros-frontend/src/jwt/Cookies.ts +++ b/growbros-frontend/src/jwt/Cookies.ts @@ -21,7 +21,7 @@ export function getCookie(name: string | any[]){ }) return result; } -export function deleteCookie(name: string | any[]){ - // Setzt das Cookie mit dem gleichen Namen auf ein Ablaufdatum in der Vergangenheit - document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; +export function deleteJwt(){ + document.cookie = `Jwt=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; + console.log("deleted Cookie ") } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..de7c4d6e5547a51264d06bd19d6700a19cc86d51 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "GrowBros", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/src/main/java/hdm/mi/growbros/security/JwtService.java b/src/main/java/hdm/mi/growbros/security/JwtService.java index 13f8cb5f15722a0890c73e06401d789e9aa4f4cc..a14a4d28bff92e63defa1dc865df0709952445fe 100644 --- a/src/main/java/hdm/mi/growbros/security/JwtService.java +++ b/src/main/java/hdm/mi/growbros/security/JwtService.java @@ -34,6 +34,7 @@ public class JwtService { } public String generateToken(UserDetails userDetails) { + return generateToken(new HashMap<>(), userDetails); } @@ -43,8 +44,8 @@ public class JwtService { .setClaims(extraClaims) .setSubject(userDetails.getUsername()) .setIssuedAt(new Date(System.currentTimeMillis())) - .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24)) //token ist 24h gültig - .signWith(getSignInKey(), SignatureAlgorithm.HS256) + .setExpiration(new Date(System.currentTimeMillis() + 100)) //token ist 24h gültig + .signWith(getSignInKey(), SignatureAlgorithm.HS256) //dafür verantwortlich, den generierten JSON Web Token (JWT) mit einem geheimen Schlüssel (Secret Key) zu signiere .compact(); } public boolean isTokenValid(String token, UserDetails userDetails) {