feat: Admin-Login, Token-Handling und Passwort-Hashing optimiert

- 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.
This commit is contained in:
ISA
2024-11-15 11:48:52 +01:00
parent f619d7b796
commit ffc5b56b37
3 changed files with 14 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ import { useRouter } from "next/router";
import "bootstrap-icons/font/bootstrap-icons.css"; import "bootstrap-icons/font/bootstrap-icons.css";
import SettingsModal from "./modales/settingsModal/SettingsModal"; import SettingsModal from "./modales/settingsModal/SettingsModal";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
import decodeToken from "../utils/decodeToken";
function Header() { function Header() {
const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn); const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn);

View File

@@ -8,17 +8,7 @@ import handleSave from "./handlers/handleSave";
import handleDisplayEinschalten from "./handlers/handleDisplayEinschalten"; import handleDisplayEinschalten from "./handlers/handleDisplayEinschalten";
import handleChange from "./handlers/handleChange"; import handleChange from "./handlers/handleChange";
import firmwareUpdate from "./handlers/firmwareUpdate"; import firmwareUpdate from "./handlers/firmwareUpdate";
import decodeToken from "../../../utils/decodeToken";
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;
}
}
function KueModal({ showModal, onClose, slot, onModulNameChange }) { function KueModal({ showModal, onClose, slot, onModulNameChange }) {
const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn); const isAdminLoggedIn = useSelector((state) => state.auth.isAdminLoggedIn);

12
utils/decodeToken.js Normal file
View File

@@ -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;