Jesko Anschütz
8e0501a012
Doku: Screen-Usserverwaltung (Phase 8)
...
Aktualisiert Dokumentation für Screen-User Management nach Backy's Implementierung:
docs/SCHEMA.md:
- users.role erweitert: 'admin' | 'screen_user' | 'tenant'
- Neue Tabelle: user_screen_permissions (user_id, screen_id, created_at, unique constraint, FK mit CASCADE)
- AuthStore: CreateScreenUser, ListScreenUsers, DeleteUser
- ScreenStore: GetAccessibleScreens, HasUserScreenAccess, AddUserToScreen, RemoveUserFromScreen, GetScreenUsers
docs/API-ENDPOINTS.md:
- POST /admin/users — Screen-User anlegen
- POST /admin/users/{userID}/delete — Screen-User löschen
- POST /admin/screens/{screenID}/users — User zu Screen hinzufügen
- POST /admin/screens/{screenID}/users/{userID}/remove — User von Screen entfernen
server/backend/README.md:
- AuthStore und ScreenStore Methoden dokumentiert
- Middleware RequireScreenAccess erklärt
- Migration 003_user_screen_permissions.sql erwähnt
DEVELOPMENT.md:
- users.role Werte dokumentiert (admin, screen_user, tenant)
Co-Authored-By: Backy (Screen-User Implementation) <noreply@anthropic.com>
2026-03-23 22:07:32 +01:00
Jesko Anschütz
029fa39ffd
Dokumentation: Security-Features und Upload-Konsolidierung (Phase 6)
...
Neue Packages und Module:
- fileutil: Shared Upload-Logik mit Tenant-Isolation
- httpapi/csrf.go: Double-Submit-Cookie CSRF-Schutz
- httpapi/ratelimit.go: Rate-Limiting für /login
- httpapi/uploads.go: neuteredFileSystem (kein Directory-Listing)
- httpapi/manage/csrf_helpers.go: CSRF-Helpers für Templates
- player/agent/internal/screenshot/screenshot.go: Periodische Screenshot-Erfassung
Neue Umgebungsvariablen:
- MORZ_INFOBOARD_REGISTER_SECRET: Pre-Shared-Secret für Agent-Registrierung
- MORZ_INFOBOARD_SCREENSHOT_EVERY: Screenshot-Intervall im Player-Agent (Sekunden)
Dokumentation aktualisiert:
- server/backend/README.md: Neue Packages und Env-Variable REGISTER_SECRET
- DEVELOPMENT.md: Beide neuen Env-Variablen mit Erklärungen
- docs/API-ENDPOINTS.md: Screenshot-Endpoint als "In Vorbereitung" dokumentiert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 21:01:47 +01:00
Jesko Anschütz
4268da7988
Doku-Sync: Auth, Tenant-Dashboard, Middleware, Schema nachgezogen
...
- SCHEMA.md: users-Tabelle korrigiert, sessions-Tabelle ergänzt
- API-ENDPOINTS.md: Auth-Routen + Tenant-Dashboard-Routen ergänzt
- SERVER-KONZEPT.md: Abschnitte Authentifizierung, Middleware-Kette, Tenant-Dashboard neu
- backend/README.md: komplett neu auf Basis aktueller Implementierung
- DEVELOPMENT.md: veraltete "nicht vorhanden"-Punkte bereinigt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 20:07:12 +01:00
Jesko Anschütz
0e66bfdb24
Tenant-Feature Phase 6: Session-Cleanup, Docker-Env, Security-Fixes, Doku
...
Session-Cleanup:
- app.go: stündlicher Ticker für CleanExpiredSessions mit Context-Shutdown
Docker/Infra:
- compose/.env.example: Vorlage für ADMIN_PASSWORD, DEV_MODE, DEFAULT_TENANT
- server-stack.yml: Backend-Service referenziert neue Env-Variablen
Security-Review (Larry):
- EnsureAdminUser: Admin-Check tenant-scoped statt global
- scanUser() (toter Code, falsche Spaltenanzahl) entfernt
- RequireTenantAccess: leerer tenantSlug nicht mehr als Bypass nutzbar
- Login: Dummy-bcrypt bei unbekanntem User gegen Timing-Leak
- Logout-Cookie: Secure-Flag konsistent mit Login gesetzt
Doku (Doris):
- DEVELOPMENT.md: Abschnitt "Lokale Entwicklung mit Login"
- TENANT-FEATURE-PLAN.md: Phase 3-5 Checkboxen abgehakt
- TODO.md: erledigte Punkte abgehakt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 19:39:39 +01:00
Jesko Anschütz
aff12a4d81
Doku-Sync: README, TODO, DEVELOPMENT und API-Docs auf Implementierungsstand nachgezogen
...
README, DEVELOPMENT und TODO spiegelten noch den Stand vor Ebene 1+2 wider.
Checkboxen in TODO von ~18 auf ~70 aktualisiert, drei neue API-Dokumentationsdateien ergänzt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 09:55:36 +01:00
Jesko Anschütz
bbcf0a1228
Baue Ebene 1: Player-UI, Kiosk-Display und vollstaendiges Ansible-Deployment
...
Player-UI (playerserver):
- Lokale Kiosk-Seite unter /player mit orientierungsgerechtem Splash-Bild
- Splash-PNGs (Portrait/Landscape) eingebettet via go:embed
- Unteres-Drittel-Overlay mit erweiterbaren Sysinfo-Items (Hostname, Uptime)
- /api/now-playing und /api/sysinfo JSON-Endpunkte
- iframe-Overlay fuer spaetere Inhalts-URL
Ansible-Rolle signage_display (neu):
- Pakete: xserver-xorg-core, xinit, openbox, chromium, unclutter
- Kiosk-Skript mit openbox als WM (noetig fuer korrektes --kiosk-Vollbild)
- systemd-Unit mit Conflicts=getty@tty1 (behebt TTY-Blockierung beim Start)
- Chromium Managed Policy: TranslateEnabled=false, Notifications/Geolocation blockiert
- --lang=de Flag gegen Sprachauswahl-Dialog
Ansible-Rolle signage_player (erweitert):
- Legt signage_user an falls nicht vorhanden
- PlayerListenAddr und PlayerContentURL in Konfiguration
- journald volatile Storage (SD-Karten-Schonung)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 22:34:16 +01:00
Jesko Anschütz
56635554c7
Fuege Screen-Loeschung, Meta-Update, Datei-Persistenz und Lifecycle-Test hinzu
...
- DELETE /api/v1/screens/{screenId}/status loescht einzelne Screen-Eintraege
- /api/v1/meta listet jetzt 5 Tools inkl. screen-status-delete und diagnostic_ui-Pfade
- filePlayerStatusStore persistiert den Status-Store atomar in einer JSON-Datei
- MORZ_INFOBOARD_STATUS_STORE_PATH aktiviert die Datei-Persistenz (leer = In-Memory)
- Integration-Test deckt den vollstaendigen Lifecycle: POST -> list -> HTML -> JSON -> DELETE -> 404 ab
- DEVELOPMENT.md beschreibt End-to-End-Entwicklungstest und neue Env-Variable
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 20:34:37 +01:00
Jesko Anschütz
0b199f9289
Mache Statusseite als Diagnoseansicht nutzbarer
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 19:39:17 +01:00
Jesko Anschütz
bdc77e87e3
Lege erste sichtbare Statusseite an
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 19:19:45 +01:00
Jesko Anschütz
4ba3b4ddef
Leite Diagnosezustand im Statuspfad ab
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:49:48 +01:00
Jesko Anschütz
85949937cc
Validiere Statuswerte und verfeinere Frischelogik
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:45:37 +01:00
Jesko Anschütz
943553234d
Lege Statusuebersicht fuer Screens an
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:33:14 +01:00
Jesko Anschütz
cc06b5a728
Leite Frische des letzten Player-Status ab
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:30:49 +01:00
Jesko Anschütz
8f0f06ae25
Transportiere Server-Connectivity im Statuspfad
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:27:44 +01:00
Jesko Anschütz
a69135c0b9
Fuehre Offline-Schwelle fuer Server-Connectivity ein
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:25:01 +01:00
Jesko Anschütz
2c780d3e60
Dokumentiere Statusspeicherung und Connectivity-Zustaende
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 18:22:31 +01:00
Jesko Anschütz
1bfcdfd922
Integriere golangci-lint in den Entwicklungsablauf
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 17:53:24 +01:00
Jesko Anschütz
b04acdee09
Dokumentiere ersten HTTP-Statuspfad fuer den Agenten
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 17:43:08 +01:00
Jesko Anschütz
30b862008a
Aktualisiere naechste Agent-Schritte im Entwicklungsleitfaden
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 17:00:24 +01:00
Jesko Anschütz
9294f5e324
Aktualisiere Entwicklungsstand zum Agent-Lifecycle
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-22 16:55:42 +01:00
Jesko Anschütz
bf993a5945
Baue Layout-Resolver und lokale Entwicklungsgerueste aus
2026-03-22 16:03:21 +01:00
Jesko Anschütz
6a65505304
Lege Entwicklungsleitfaden und Go-Gerueste an
2026-03-22 13:42:00 +01:00