From ade87db2cf374abaccb4b68d4bc021e49b209bd9 Mon Sep 17 00:00:00 2001 From: ISA Date: Mon, 18 Nov 2024 07:58:55 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Entfernen=20der=20Redux-Abh=C3=A4ngigke?= =?UTF-8?q?it=20f=C3=BCr=20Admin-Login=20in=20der=20Header-Komponente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Redux-State durch lokalen useState für `isAdminLoggedIn` ersetzt. - Token-Validierung über sessionStorage mit useEffect hinzugefügt. - Alle Redux-Selectoren entfernt und unnötige Importe bereinigt. - Verbesserte Fehlerbehandlung bei der Token-Verarbeitung, um Abstürze zu vermeiden. - Logout-Funktionalität vereinfacht, indem sessionStorage direkt geleert wird. --- components/Header.jsx | 29 +++++++++++++----------- components/modales/kueModal/KueModal.jsx | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/Header.jsx b/components/Header.jsx index 46f5b16..af4be78 100644 --- a/components/Header.jsx +++ b/components/Header.jsx @@ -4,33 +4,36 @@ import Image from "next/image"; import { useRouter } from "next/router"; import "bootstrap-icons/font/bootstrap-icons.css"; import SettingsModal from "./modales/settingsModal/SettingsModal"; -import { useSelector } from "react-redux"; 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); // Lokaler Zustand + const deviceName = "Station XY"; // Dummy-Daten, da Redux entfernt wurde const handleSettingsClick = () => setShowSettingsModal(true); const handleCloseSettingsModal = () => setShowSettingsModal(false); const handleLogout = () => { - localStorage.removeItem("token"); // Token entfernen beim Abmelden - //setIsAdminLoggedIn(false); + sessionStorage.removeItem("token"); // Token entfernen beim Abmelden + setIsAdminLoggedIn(false); // Admin-Status zurücksetzen window.location.href = "/offline.html"; }; // Funktion, um den Token-Status zu prüfen useEffect(() => { - const token = localStorage.getItem("token"); + const token = sessionStorage.getItem("token"); if (token) { - const { exp } = JSON.parse(atob(token)); - if (Date.now() < exp) { - //setIsAdminLoggedIn(true); - } else { - localStorage.removeItem("token"); // Entferne abgelaufenen Token - //setIsAdminLoggedIn(false); + try { + const { exp } = JSON.parse(atob(token)); + if (Date.now() < exp) { + setIsAdminLoggedIn(true); // Admin eingeloggt + } else { + sessionStorage.removeItem("token"); // Entferne abgelaufenen Token + setIsAdminLoggedIn(false); + } + } catch (error) { + console.error("Fehler beim Verarbeiten des Tokens:", error); + setIsAdminLoggedIn(false); } } }, []); diff --git a/components/modales/kueModal/KueModal.jsx b/components/modales/kueModal/KueModal.jsx index ffa0051..dd7d2b7 100644 --- a/components/modales/kueModal/KueModal.jsx +++ b/components/modales/kueModal/KueModal.jsx @@ -97,7 +97,7 @@ function KueModal({ showModal, onClose, slot, onModulNameChange }) { }, [showModal]); // nur von showModal abhängig ansonsten wird alle 10 Sekunden die Werte zurückgesetzt in Modal //------------------------------------------------------------------------------------------------------------ useEffect(() => { - const token = localStorage.getItem("token"); + const token = sessionStorage.getItem("token"); if (token) { const decoded = decodeToken(token); if (decoded && decoded.role === "Admin") {