docs: restricted-Rolle in API-Endpoints und README dokumentiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jesko Anschütz 2026-03-27 21:40:48 +01:00
parent c943df4663
commit f70ebddad2
2 changed files with 30 additions and 0 deletions

View file

@ -535,6 +535,7 @@ Beide Endpunkte erfordern `RequireAuth` + `RequireScreenAccess` (`authScreen`-Mi
Sendet einen MQTT-Befehl zum Ein- oder Ausschalten des physischen Displays.
**Auth:** Erforderlich (Bearer-Token oder Session-Cookie). Screen-Zugriff erforderlich.
**Rollen:** Nur `admin_user` und `screen_user`. Benutzer mit Rolle `restricted` erhalten `403 Forbidden`.
**Path-Parameter:**
- `screenSlug` — Slug des Screens
@ -552,6 +553,7 @@ oder
**Fehler:**
- `400 Bad Request``state` ist nicht `"on"` oder `"off"`, oder ungültiges JSON
- `403 Forbidden` — Benutzer hat nicht die erforderliche Rolle (restricted-Benutzer dürfen Display nicht steuern)
- `502 Bad Gateway` — MQTT-Publish fehlgeschlagen
---
@ -561,6 +563,7 @@ oder
Speichert den Zeitplan für das automatische Ein-/Ausschalten eines Displays.
**Auth:** Erforderlich. Screen-Zugriff erforderlich.
**Rollen:** Nur `admin_user` und `screen_user`. Benutzer mit Rolle `restricted` erhalten `403 Forbidden`.
**Path-Parameter:**
- `screenSlug` — Slug des Screens
@ -582,6 +585,7 @@ Der Scheduler prüft jede Minute, ob die aktuelle Uhrzeit mit `power_on_time` od
**Fehler:**
- `400 Bad Request` — Zeitformat ungültig (nicht `HH:MM`), oder ungültiges JSON
- `403 Forbidden` — Benutzer hat nicht die erforderliche Rolle (restricted-Benutzer dürfen Zeitplan nicht ändern)
- `404 Not Found` — Screen nicht vorhanden
- `500 Internal Server Error` — DB-Fehler
@ -612,6 +616,8 @@ Ruft den aktuell aktiven globalen Override ab.
Setzt einen globalen Override und sendet sofort MQTT-Befehle an alle Screens.
**Rollen:** Nur `admin_user` und `screen_user`. Benutzer mit Rolle `restricted` erhalten `403 Forbidden`.
**Request-Body:**
```json
{"type":"off","until":"2026-04-05T18:00:00+02:00"}
@ -624,6 +630,7 @@ Setzt einen globalen Override und sendet sofort MQTT-Befehle an alle Screens.
**Fehler:**
- `400 Bad Request``type` nicht "on"/"off", oder ungültiges Zeitformat
- `403 Forbidden` — Benutzer hat nicht die erforderliche Rolle (restricted-Benutzer dürfen Override nicht setzen)
- `500 Internal Server Error` — DB-Fehler
---
@ -632,9 +639,12 @@ Setzt einen globalen Override und sendet sofort MQTT-Befehle an alle Screens.
Hebt den aktuellen globalen Override auf.
**Rollen:** Nur `admin_user` und `screen_user`. Benutzer mit Rolle `restricted` erhalten `403 Forbidden`.
**Response:** `204 No Content`
**Fehler:**
- `403 Forbidden` — Benutzer hat nicht die erforderliche Rolle (restricted-Benutzer dürfen Override nicht löschen)
- `500 Internal Server Error` — DB-Fehler
---
@ -651,6 +661,7 @@ Setzt oder löscht den per-Screen "Einschalten bis"-Override. Mit diesem Overrid
dem angegebenen Zeitpunkt eingeschaltet, selbst wenn der globale Schedule "aus" vorsieht.
**Auth:** Erforderlich. Screen-Zugriff erforderlich.
**Rollen:** Nur `admin_user` und `screen_user`. Benutzer mit Rolle `restricted` erhalten `403 Forbidden`.
**Path-Parameter:**
- `screenSlug` — Slug des Screens
@ -669,6 +680,7 @@ Um den Override zu löschen, `on_until` auf `null` setzen:
**Fehler:**
- `400 Bad Request` — Ungültiges Zeitformat oder ungültiges JSON
- `403 Forbidden` — Benutzer hat nicht die erforderliche Rolle (restricted-Benutzer dürfen Override nicht setzen)
- `404 Not Found` — Screen nicht vorhanden
- `500 Internal Server Error` — DB-Fehler
@ -686,6 +698,17 @@ Spezialendpoint zur Auflösung von Nachrichten-Wand-Anfragen (noch in Entwicklun
Alle Auth-Routen erfordern keine vorherige Authentifizierung.
### Benutzerrollen
Das System unterscheidet folgende Rollen:
- `admin_user` — Volller Zugriff auf alle Funktionen, inkl. Benutzerverwaltung und Display-Steuerung
- `screen_user` — Darf Medien hochladen, Playlists bearbeiten und Displays steuern (An/Aus, Zeitplan, Override)
- `restricted` — Darf Medien hochladen und Playlist bearbeiten. Keine Display-Steuerung (An/Aus, Zeitplan, Override). Betroffene Endpunkte antworten mit 403 Forbidden.
- `tenant_user` — Tenant-Operator für Self-Service-Dashboard (Medienupload, Tenantmenü)
---
### GET /
Root-Redirect auf `/login`.

View file

@ -11,6 +11,13 @@ Dieses Verzeichnis enthaelt das zentrale Go-Backend fuer das Info-Board-System.
- Player-Status-Ingest und Diagnose
- MQTT-Notifizierungen bei Playlist-Aenderungen
## Benutzerrollen
- `admin_user` — Volller Zugriff auf alle Funktionen
- `screen_user` — Darf Medien hochladen und Playlist bearbeiten. Display-Steuerung (An/Aus, Zeitplan, Override)
- `restricted` — Darf Medien hochladen und Playlist bearbeiten. Keine Display-Steuerung.
- `tenant_user` — Tenant-Operator für Self-Service-Dashboard
## Unterstruktur
- `cmd/api/` — Startpunkt des Backends