From ffc5b56b376f7a6b344c7861409fd24b4cd22c17 Mon Sep 17 00:00:00 2001 From: ISA Date: Fri, 15 Nov 2024 11:48:52 +0100 Subject: [PATCH] feat: Admin-Login, Token-Handling und Passwort-Hashing optimiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Passwort-Hashing und Salt-Erzeugung mit bcrypt implementiert, um sensible Daten wie Passwörter sicher zu speichern. - Token-Generierung und -Validierung eingeführt, um den Admin-Status zu überprüfen und temporäre Zugriffsrechte zu verwalten. - Benutzername-Vergleich case-insensitive gestaltet, um Benutzerfreundlichkeit zu verbessern. - Token wird in localStorage gespeichert und die Ablaufzeit überprüft, um Sicherheit und konsistente Sitzungen zu gewährleisten. - Fehlerbehebungen und Code-Refactor durchgeführt, um Lesbarkeit und Wartbarkeit zu verbessern. **Warum:** - Passwort-Hashing und Salt schützen Passwörter vor direkten Angriffen (z. B. Brute-Force oder Datenlecks). - Token-Handling ermöglicht eine sichere und flexible Verwaltung von Sitzungsinformationen. - Verbesserungen erhöhen die Sicherheit und Benutzerfreundlichkeit des Admin-Bereichs. --- components/Header.jsx | 1 + components/modales/kueModal/KueModal.jsx | 12 +----------- utils/decodeToken.js | 12 ++++++++++++ 3 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 utils/decodeToken.js diff --git a/components/Header.jsx b/components/Header.jsx index 6ce2055..83d1432 100644 --- a/components/Header.jsx +++ b/components/Header.jsx @@ -5,6 +5,7 @@ import { useRouter } from "next/router"; import "bootstrap-icons/font/bootstrap-icons.css"; import SettingsModal from "./modales/settingsModal/SettingsModal"; import { useSelector } from "react-redux"; +import decodeToken from "../utils/decodeToken"; function Header() { const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn); diff --git a/components/modales/kueModal/KueModal.jsx b/components/modales/kueModal/KueModal.jsx index 3ea3c6c..2b6b23f 100644 --- a/components/modales/kueModal/KueModal.jsx +++ b/components/modales/kueModal/KueModal.jsx @@ -8,17 +8,7 @@ import handleSave from "./handlers/handleSave"; import handleDisplayEinschalten from "./handlers/handleDisplayEinschalten"; import handleChange from "./handlers/handleChange"; import firmwareUpdate from "./handlers/firmwareUpdate"; - -function decodeToken(token) { - try { - const base64Payload = token.split(".")[1]; - const payload = JSON.parse(atob(base64Payload)); - return payload; - } catch (error) { - console.error("Fehler beim Dekodieren des Tokens:", error); - return null; - } -} +import decodeToken from "../../../utils/decodeToken"; function KueModal({ showModal, onClose, slot, onModulNameChange }) { const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn); diff --git a/utils/decodeToken.js b/utils/decodeToken.js new file mode 100644 index 0000000..89d2756 --- /dev/null +++ b/utils/decodeToken.js @@ -0,0 +1,12 @@ +function decodeToken(token) { + try { + const base64Payload = token.split(".")[1]; + const payload = JSON.parse(atob(base64Payload)); + return payload; + } catch (error) { + console.error("Fehler beim Dekodieren des Tokens:", error); + return null; + } +} + +export default decodeToken;