- Layout angepasst, um Scrollbalken und Leerbereich nach dem Footer zu vermeiden.
- `h-screen` und `overflow-hidden` für die Hauptcontainer verwendet.
- Sicherstellung, dass die Seite genau die Bildschirmhöhe ausfüllt.
- Cleanup in CSS und JSX zur Verbesserung der Benutzeroberfläche.
- Header und Footer mit festen Höhen (13vh und 8vh) versehen.
- Inhaltsbereich dynamisch skaliert mit calc(100vh - Header - Footer).
- Navigation für volle Höhe des Inhalts angepasst.
- Alle Elemente ohne Scrollen auf Laptop-Auflösung sichtbar gemacht.
- Separate Modale für digitale Eingänge und Ausgänge implementiert.
- Modale enthalten spezifische Details wie Status, Beschreibung und Invertierung (für Eingänge) sowie Schaltzustand und Bezeichnung (für Ausgänge).
- Modale werden über ein Zahnrad-Symbol geöffnet und sind zentriert dargestellt.
- Funktionen zum Öffnen und Schließen der Modale (`openInputModal`, `closeInputModal`, `openOutputModal`, `closeOutputModal`) hinzugefügt.
- State-Management für ausgewählte Einträge (`selectedInput`, `selectedOutput`) implementiert.
- Responsives Design und einheitliches Styling für Modale mit z-index und Overlays sichergestellt.
- Added a new breakpoint "laptop" with a width of 1348px to the Tailwind configuration.
- This breakpoint accommodates the dimensions of 1348px width for responsive designs.
- Intervall-basierte Überprüfung von `localStorage` hinzugefügt, um Änderungen am Admin-Status (`isAdminLoggedIn`) sofort zu synchronisieren.
- Zustand `isAdminLoggedIn` wird nun direkt nach Login/Logout aktualisiert.
- Weiterleitung zu `/offline.html` nach Logout integriert.
- Problem behoben, dass "Admin-Modus aktiv" erst nach einem Neuladen angezeigt wurde.
- 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.
- Admin-Token wird nun in SessionStorage anstelle von LocalStorage gespeichert.
- Passwort für Admin-Benutzer ist jetzt mit bcrypt gehasht.
- Verbesserte Sicherheit durch die Verwendung von SessionStorage (Daten werden beim Schließen des Tabs gelöscht).
- Anpassung von Funktionen zur Token-Verwaltung für SessionStorage.
Navigiere zu den System-Einstellungen.
Klicke auf den Button "Admin anmelden".
Verwende die folgenden Anmeldedaten:
Benutzername: admin
Passwort: Littwin
- 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.
- Implemented dynamic button label in SettingsModal to display "Admin anmelden" or "Admin abmelden" based on Redux state `isAdminLoggedIn`.
- Added `handleAdminLogout` function to clear token from localStorage and update Redux state when admin logs out.
- Refactored button click handling to toggle login/logout functionality seamlessly.
- Slot-Formatierung angepasst, um führende Nullen aus dem Slot-Parameter zu entfernen, falls der Slot kleiner als 10 ist.
- Verwendet `parseInt` zur Bereinigung des Slot-Formats vor dem Senden der Schleifenmessungsanforderung.
- Neuen Redux-Slice 'authSlice' erstellt, um den Admin-Login-Status zu verwalten.
- Token-Verwaltung im SettingsModal angepasst, um Redux-Status zu aktualisieren.
- Admin-Warnhinweis im Header zeigt jetzt den Redux-Status an und aktualisiert sich automatisch.
- Abmeldefunktion verbessert, um Token aus dem Redux-Store zu entfernen und Seite zu aktualisieren.
- JWT-Token-Erstellung und -Speicherung für sichere Admin-Authentifizierung in SettingModal hinzugefügt.
- Stabilitätsprobleme des Modals behoben.
- Funktionalität des Modals und des Tokens überprüft, um eine reibungslose Benutzererfahrung sicherzustellen.
- Fortschrittsbalken integriert, der den Benutzer über den laufenden Neustartvorgang informiert.
- CSS-basierten Fortschrittsbalken erstellt, der sich schrittweise über 30 Sekunden füllt.
- Aktualisierung des Wartebildschirms mit der Nachricht "Bitte warten, CPL wird neu gestartet...".
- Optimierung der Funktion zur korrekten Darstellung und Animation des Fortschrittsbalkens.
- Bedingte Weiterleitung in login.js hinzugefügt, um je nach Umgebung auf unterschiedliche Seiten zu leiten.
- In der Entwicklungsumgebung erfolgt die Weiterleitung zu "/kabelueberwachung".
- In der Produktionsumgebung erfolgt die Weiterleitung zu "/kabelueberwachung.html".
- Stellt sicher, dass die richtige Seite basierend auf der Umgebung geladen wird.
- Button zum Admin-Login im Header hinzugefügt, der abhängig von der Umgebung (`NODE_ENV`) zu "/login" (Entwicklung) oder "/login.html" (Produktion) weiterleitet
- Tooltip "Als Admin anmelden" hinzugefügt, der angezeigt wird, wenn der Benutzer über den Admin-Button fährt
- Icon für Admin-Login-Button mit `bi-person-circle` ergänzt für eine ansprechendere UI
- `generateToken`-Funktion implementiert, um Tokens mit Benutzerrollen zu erstellen
- `decodeToken` in `KueModal` hinzugefügt, um das Token zu dekodieren und den "Firmware Update"-Button für Admin-Rolle bedingt anzuzeigen
- Fehlerbehandlung für ungültige Tokens in localStorage verbessert
- Sicherstellung der Token-Dekodierung für Admin-Zugriffskontrolle in Entwicklungs- und Produktionsumgebung
- handleSubmit aktualisiert, um geänderte IP-Adresse an handleReboot zu übergeben
- handleReboot angepasst, um nach Neustart dynamisch zur neuen IP-Adresse weiterzuleiten
- Weiterleitung abhängig von Umgebung: in Produktion zu "/dashboard.html" und in Entwicklung zu "/dashboard"
- 33 Sekunden Wartezeit hinzugefügt, um CPL-Verfügbarkeit nach Neustart sicherzustellen
- Zeigt Warte-Seite für 5 Sekunden an, bevor zur Dashboard-Seite weitergeleitet wird
- Weiterleitung in der Produktion zu "/dashboard.html" und in der Entwicklung zu "/dashboard"
- handleReboot angepasst, um nach 35 Sekunden CPL-Neustart die Verfügbarkeit sicherzustellen und Weiterleitung basierend auf NODE_ENV zu steuern