Zugangsdaten-Entitaet, Gruppen-Tabelle mit Aufklappansicht, Vor-/Nachname, Dashboard-Sektionen
- Zugangsdaten (SSH-Logins) als eigenstaendige, wiederverwendbare Entitaet statt direkt am Switch; inline Neuanlage beim Switch-Erstellen moeglich; automatische Migration bestehender Switch-Logins - Gruppen-Seite als Tabelle mit Aufklapp-Zeile fuer Rechte (Akkordeon), Admin als feste Systemzeile (Mitgliederverwaltung ueber is_admin), Standardgruppe 'Benutzer' mit allen Ansichtsrechten (devices.view, switches.view), automatische Zuordnung neuer/verwaister Benutzer - Users-Seite: Icon-Buttons statt Text, Bearbeiten+Passwortaenderung in einem Modal zusammengefuehrt, Gruppe/Admin-Zuweisung ueber eigenen Zuweisen-Button (wie Switch-Zuordnung bei Devices), Vor-/Nachname - Dashboard: einheitliche Kachelansicht mit/ohne Login, drei sortierte Abschnitte (Offline/Online/Deaktiviert), Kachel-Suchfilter, Bootstrap- artiges Grid (max. 6 Spalten), Aktivieren-Option im Popup fuer deaktivierte Geraete, Countdown serverseitig korrekt geseedet - Sidebar dauerhaft einklappbar (Desktop, persistent via localStorage) - Devices-Tabelle: Aktions-Buttons nebeneinander statt untereinander Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,20 +10,33 @@ Linux-VM). Entwickelt wird unter WSL2 (Ubuntu) unter Windows — siehe
|
||||
|
||||
Die App ermöglicht:
|
||||
|
||||
- **Öffentliches Kurz-Dashboard ohne Login** (Hostname, IP, Status, letzte
|
||||
Prüfung) — für den schnellen Blick auf dem Flur-Monitor; volle Verwaltung
|
||||
und PoE-Neustart bleiben hinter dem Login
|
||||
- Verwaltung von Devices und Switches (inkl. verschlüsselter SSH-Zugangsdaten)
|
||||
- **Öffentliches Kachel-Dashboard ohne Login** — zeigt nur aktive (nicht
|
||||
deaktivierte) Geräte, nur Online/Offline/Gesamt-Statistik; volle Verwaltung,
|
||||
Aktivieren/Deaktivieren und PoE-Neustart bleiben hinter dem Login. Eingeloggt
|
||||
sind zusätzlich deaktivierte Geräte sichtbar (eigene Kachel-Sektion). Alle
|
||||
Kacheln sind durchsuchbar und in drei Abschnitten sortiert: Offline, Online,
|
||||
Deaktiviert — jeweils alphabetisch
|
||||
- Verwaltung von Devices und Switches
|
||||
- **Zugangsdaten als eigene, wiederverwendbare Entität**: SSH-Logins werden
|
||||
einmal angelegt und können mehreren Switchen zugeordnet werden; beim
|
||||
Anlegen eines Switches lassen sich bestehende Zugangsdaten auswählen oder
|
||||
direkt neue hinterlegen, ohne vorher zu „Zugangsdaten“ wechseln zu müssen
|
||||
- **Browser-SSH-Terminal beim Anlegen/Bearbeiten eines Switches**, um den
|
||||
Host-Key zu bestätigen und die Zugangsdaten direkt zu prüfen, bevor der
|
||||
Switch gespeichert wird — funktioniert auf jedem Betriebssystem, die
|
||||
SSH-Verbindung wird dabei immer vom PoE-Server aus aufgebaut
|
||||
- Manueller PoE-Neustart einzelner Geräte per Klick
|
||||
- Einstellbares Prüfintervall (steuert den Hintergrund-Check-Dienst)
|
||||
- Manueller PoE-Neustart einzelner Geräte per Klick; bei deaktivierten
|
||||
Geräten bietet das Detail-Popup stattdessen direkt eine Aktivieren-Option
|
||||
- Einstellbares Prüfintervall (steuert den Hintergrund-Check-Dienst) —
|
||||
der Countdown „Nächste Prüfung“ wird aus dem tatsächlichen letzten
|
||||
Log-Eintrag berechnet, nicht bei jedem Seitenaufruf neu gestartet
|
||||
- Live-Log-Ansicht mit farblicher Hervorhebung (online/offline)
|
||||
- **Rechtesystem mit Gruppen**: Admins dürfen immer alles; normalen
|
||||
Benutzern lassen sich über Gruppen einzelne Verwaltungsrechte gezielt
|
||||
zuweisen (siehe [Rechtesystem](#rechtesystem-gruppen--berechtigungen))
|
||||
- **Rechtesystem mit Gruppen**: Admins dürfen immer alles (als Gruppe „Admin“
|
||||
überall mit aufgeführt); normalen Benutzern lassen sich über Gruppen
|
||||
einzelne Verwaltungsrechte gezielt zuweisen, inkl. reiner Ansichtsrechte
|
||||
(siehe [Rechtesystem](#rechtesystem-gruppen--berechtigungen))
|
||||
- Einklappbare Sidebar (Desktop: dauerhaft, über Neuladen hinweg gemerkt;
|
||||
mobil: temporäres Überlagern)
|
||||
|
||||
## Was ist neu gegenüber dem Original?
|
||||
|
||||
@@ -61,39 +74,67 @@ Die App ermöglicht:
|
||||
|
||||
## Rechtesystem (Gruppen & Berechtigungen)
|
||||
|
||||
Admins (`is_admin=1`) dürfen wie bisher alles, inklusive Benutzer-/Gruppen-/
|
||||
Admins dürfen wie bisher alles, inklusive Benutzer-/Gruppen-/
|
||||
Settingsverwaltung — das bleibt exklusiv Admins vorbehalten. Zusätzlich gibt
|
||||
es jetzt **Gruppen**: eine Gruppe bündelt einzelne Verwaltungsrechte, die
|
||||
dann normalen Benutzern zugewiesen werden können, ohne sie zu Admins zu
|
||||
machen. Ein Benutzer kann mehreren Gruppen angehören — die Rechte addieren
|
||||
sich (Vereinigung, nicht Schnittmenge).
|
||||
es **Gruppen**: eine Gruppe bündelt einzelne Verwaltungsrechte, die dann
|
||||
normalen Benutzern zugewiesen werden können, ohne sie zu Admins zu machen.
|
||||
Ein Benutzer kann nur einer Gruppe/Rolle gleichzeitig zugeordnet sein
|
||||
(über den Button „Gruppe zuweisen“, analog zur Switch-Zuordnung bei
|
||||
Devices) — technisch sind mehrere Gruppen pro Benutzer möglich (Rechte
|
||||
würden sich addieren), die UI bildet aber bewusst nur eine 1:1-Zuordnung ab.
|
||||
|
||||
Auf der **Gruppen**-Seite (nur für Admins) werden zur Übersicht immer auch
|
||||
die beiden Systemrollen mit aufgeführt:
|
||||
- **Admin** — eine feste, nicht editierbare Zeile mit allen Rechten;
|
||||
Mitgliedschaft wird direkt hier verwaltet (Button „Mitglieder verwalten“),
|
||||
intern über den `is_admin`-Schalter der Benutzer. Mindestens ein Admin
|
||||
muss immer bestehen bleiben (serverseitig erzwungen).
|
||||
- **Benutzer** — die **Standardgruppe**, mit der alle Ansichtsrechte
|
||||
(`devices.view`, `switches.view`) vorbelegt sind. Jeder neu angelegte,
|
||||
nicht-admin Benutzer wird ihr automatisch zugeordnet; sie kann nicht
|
||||
gelöscht werden.
|
||||
|
||||
Jede Gruppe lässt sich über „Rechte anzeigen/bearbeiten“ aufklappen (wie ein
|
||||
Akkordeon) und zeigt dort die volle Checkbox-Liste; Mitglieder werden über
|
||||
einen eigenen Button/Modal verwaltet (nur die Anzahl steht in der Tabelle).
|
||||
|
||||
Verfügbare Rechte:
|
||||
|
||||
| Bereich | Recht | Bedeutung |
|
||||
|----------|---------------------|---------------------------------------------|
|
||||
| Devices | `devices.toggle` | Geräte aktivieren/deaktivieren |
|
||||
| Devices | `devices.create` | Geräte anlegen |
|
||||
| Devices | `devices.edit` | Geräte bearbeiten (inkl. Switch-Zuordnung) |
|
||||
| Devices | `devices.delete` | Geräte löschen |
|
||||
| Devices | `devices.restart` | PoE-Neustart über das Dashboard |
|
||||
| Switches | `switches.create` | Switche anlegen |
|
||||
| Switches | `switches.edit` | Switche bearbeiten |
|
||||
| Switches | `switches.delete` | Switche löschen |
|
||||
| Bereich | Recht | Bedeutung |
|
||||
|----------|---------------------|-----------------------------------------------|
|
||||
| Devices | `devices.view` | Devices-Seite ansehen |
|
||||
| Devices | `devices.toggle` | Geräte aktivieren/deaktivieren |
|
||||
| Devices | `devices.create` | Geräte anlegen |
|
||||
| Devices | `devices.edit` | Geräte bearbeiten (inkl. Switch-Zuordnung) |
|
||||
| Devices | `devices.delete` | Geräte löschen |
|
||||
| Devices | `devices.restart` | PoE-Neustart/Aktivieren über das Dashboard |
|
||||
| Switches | `switches.view` | Switches- und Zugangsdaten-Seite ansehen |
|
||||
| Switches | `switches.create` | Switche und Zugangsdaten anlegen |
|
||||
| Switches | `switches.edit` | Switche und Zugangsdaten bearbeiten |
|
||||
| Switches | `switches.delete` | Switche und Zugangsdaten löschen |
|
||||
|
||||
Verwaltet werden Gruppen unter **Gruppen** (nur für Admins sichtbar/nutzbar):
|
||||
Name vergeben, Rechte per Checkbox zuweisen, Mitglieder auswählen. Die
|
||||
Devices-Seite bleibt für alle eingeloggten Benutzer les- und durchsuchbar;
|
||||
nur die tatsächlichen Aktionen (Buttons, Toggle-Switches, Formulare) sind an
|
||||
das jeweilige Recht gekoppelt — sowohl im Frontend (ausgeblendet) als auch
|
||||
im Backend (serverseitig durchgesetzt, unabhängig vom Frontend). Die
|
||||
Switches-Seite ist komplett unsichtbar/gesperrt für Benutzer ohne mindestens
|
||||
ein `switches.*`-Recht.
|
||||
Sowohl das Anzeigen der Devices-/Switches-Seiten als auch jede einzelne
|
||||
Aktion (Buttons, Toggle-Switches, Formulare) ist an das jeweilige Recht
|
||||
gekoppelt — im Frontend ausgeblendet **und** im Backend serverseitig
|
||||
durchgesetzt, unabhängig vom Frontend.
|
||||
|
||||
Datenmodell: `groups`, `group_permissions` (Gruppe → Recht), `user_groups`
|
||||
(Benutzer → Gruppe). Bestehende Datenbanken werden beim App-Start automatisch
|
||||
um diese Tabellen ergänzt (`_ensure_schema()` in `app.py`), ein manuelles
|
||||
Migrations-Skript ist nicht nötig.
|
||||
Datenmodell: `groups` (inkl. `is_default`-Flag), `group_permissions`
|
||||
(Gruppe → Recht), `user_groups` (Benutzer → Gruppe). Bestehende Datenbanken
|
||||
werden beim App-Start automatisch migriert (`_ensure_schema()` in `app.py`,
|
||||
inkl. Nachrüsten der Standardgruppe und Zuordnung bestehender Benutzer ohne
|
||||
Gruppe) — kein manuelles Migrations-Skript nötig.
|
||||
|
||||
## Zugangsdaten (wiederverwendbare SSH-Logins)
|
||||
|
||||
Switch-Zugangsdaten (Username + verschlüsseltes Passwort) sind eine eigene
|
||||
Entität (`credentials`-Tabelle) statt direkt am Switch zu hängen — mehrere
|
||||
Switche mit demselben Login teilen sich einen Eintrag. Beim Anlegen/Bearbeiten
|
||||
eines Switches lässt sich per Dropdown ein bestehender Eintrag auswählen oder
|
||||
über „+ Neue Zugangsdaten anlegen“ direkt im selben Formular ein neuer
|
||||
anlegen, ohne vorher zur eigenen **Zugangsdaten**-Seite wechseln zu müssen.
|
||||
Löschen ist nur möglich, wenn kein Switch mehr auf den Eintrag verweist.
|
||||
Bestehende Datenbanken aus einer älteren Version (Username/Passwort direkt
|
||||
am Switch) werden beim ersten Start automatisch migriert.
|
||||
|
||||
## Entwicklung unter WSL
|
||||
|
||||
|
||||
Reference in New Issue
Block a user