From 6a1697048cc311002c286c4468172233f56fc83a Mon Sep 17 00:00:00 2001 From: hz Date: Tue, 13 May 2025 10:58:45 -0700 Subject: [PATCH] Logout now calls the logout endpoint, role is now stored in local storage as well --- src/components/ProtectedRoute.jsx | 20 +++++++++++++++++++- src/pages/Dashboard.jsx | 12 +++++++++++- src/pages/Login.jsx | 6 +++++- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/components/ProtectedRoute.jsx b/src/components/ProtectedRoute.jsx index b4e58b9..37cbf14 100644 --- a/src/components/ProtectedRoute.jsx +++ b/src/components/ProtectedRoute.jsx @@ -7,8 +7,26 @@ const ProtectedRoute = ({ children }) => { const token = localStorage.getItem("token"); const navigate = useNavigate(); - const handleLogout = () => { + const handleLogout = async () => { + const token = localStorage.getItem("token"); + + if (!token) { + console.warn("No token found — skipping API logout."); + } else { + try { + await fetch(`${import.meta.env.VITE_API_BASE_URL}/api/Auth/logout`, { + method: "POST", + headers: { + Authorization: `Bearer ${token}`, + }, + }); + } catch (err) { + console.error("Logout API error:", err); + } + } + localStorage.removeItem("token"); + localStorage.removeItem("role"); navigate("/login"); }; diff --git a/src/pages/Dashboard.jsx b/src/pages/Dashboard.jsx index fb280af..035387a 100644 --- a/src/pages/Dashboard.jsx +++ b/src/pages/Dashboard.jsx @@ -1,10 +1,20 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; const Dashboard = () => { + const [role, setRole] = useState(""); + + useEffect(() => { + const role = localStorage.getItem("role"); + if (role) { + setRole(role); + } + }, []); + return (

Dashboard

Welcome! You are logged in.

+ {role === "SUPER" &&

You are SUPER

}
); }; diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx index f6cbf6f..e34fdfb 100644 --- a/src/pages/Login.jsx +++ b/src/pages/Login.jsx @@ -82,7 +82,11 @@ const Login = () => { } const data = await res.json(); - login(data.token); + login(data.accessToken); + + localStorage.setItem("token", data.accessToken); + localStorage.setItem("role", data.role); + navigate("/dashboard"); } catch (err) { console.error("Login error:", err);