Merge branch 'feature/session-storage' into develop

This commit is contained in:
ISA
2025-01-20 12:20:32 +01:00
5 changed files with 71 additions and 61 deletions

View File

@@ -8,32 +8,45 @@ import { useSelector } from "react-redux";
import decodeToken from "../utils/decodeToken";
function Header() {
const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn);
const router = useRouter();
const deviceName = useSelector((state) => state.variables.deviceName);
const [showSettingsModal, setShowSettingsModal] = useState(false);
//const [isAdminLoggedIn, setIsAdminLoggedIn] = useState(false);
const [isAdminLoggedIn, setIsAdminLoggedIn] = useState(false);
const deviceName = useSelector((state) => state.variables.deviceName);
const handleSettingsClick = () => setShowSettingsModal(true);
const handleCloseSettingsModal = () => setShowSettingsModal(false);
const handleLogout = () => {
localStorage.removeItem("token"); // Token entfernen beim Abmelden
//setIsAdminLoggedIn(false);
window.location.href = "/offline.html";
sessionStorage.removeItem("token"); // Token entfernen
localStorage.setItem("isAdminLoggedIn", "false"); // Admin-Status entfernen
setIsAdminLoggedIn(false); // Zustand sofort aktualisieren
router.push("/offline.html"); // Weiterleitung
};
const handleLogin = () => {
const token = JSON.stringify({ exp: Date.now() + 5 * 60 * 1000 }); // Beispiel-Token mit 5 Minuten Ablaufzeit
sessionStorage.setItem("token", token); // Token speichern
localStorage.setItem("isAdminLoggedIn", "true"); // Admin-Status setzen
setIsAdminLoggedIn(true); // Zustand sofort aktualisieren
};
// Funktion, um den Token-Status zu prüfen
useEffect(() => {
const token = localStorage.getItem("token");
if (token) {
const { exp } = decodeToken(token);
if (exp && Date.now() < exp) {
// Token ist gültig
} else {
localStorage.removeItem("token"); // Entferne abgelaufenen Token
// Initialer Check beim Laden der Komponente
const isAdmin = localStorage.getItem("isAdminLoggedIn") === "true";
setIsAdminLoggedIn(isAdmin);
// Beobachten von Änderungen in localStorage
const interval = setInterval(() => {
const updatedIsAdmin = localStorage.getItem("isAdminLoggedIn") === "true";
if (updatedIsAdmin !== isAdminLoggedIn) {
setIsAdminLoggedIn(updatedIsAdmin);
}
}
}, []);
}, 500); // Überprüfung alle 500ms
return () => {
clearInterval(interval); // Intervall stoppen, wenn die Komponente entladen wird
};
}, [isAdminLoggedIn]);
return (
<header className="bg-gray-300 flex justify-between items-center w-full h-28 relative text-black">