diff --git a/server/backend/internal/httpapi/manage/register.go b/server/backend/internal/httpapi/manage/register.go index 595ea8e..ee6710b 100644 --- a/server/backend/internal/httpapi/manage/register.go +++ b/server/backend/internal/httpapi/manage/register.go @@ -5,16 +5,17 @@ import ( "net/http" "strings" + "git.az-it.net/az/morz-infoboard/server/backend/internal/config" "git.az-it.net/az/morz-infoboard/server/backend/internal/store" ) // HandleRegisterScreen is called by the player agent on startup. -// It upserts the screen in the default tenant (morz) so that all +// It upserts the screen in the default tenant so that all // deployed screens appear automatically in the admin UI. // // POST /api/v1/screens/register // Body: {"slug":"info10","name":"Info10 Bildschirm","orientation":"landscape"} -func HandleRegisterScreen(tenants *store.TenantStore, screens *store.ScreenStore) http.HandlerFunc { +func HandleRegisterScreen(tenants *store.TenantStore, screens *store.ScreenStore, cfg config.Config) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var body struct { Slug string `json:"slug"` @@ -39,8 +40,8 @@ func HandleRegisterScreen(tenants *store.TenantStore, screens *store.ScreenStore body.Orientation = "landscape" } - // v1: single tenant — always register under "morz". - tenant, err := tenants.Get(r.Context(), "morz") + // Register under the configured default tenant. + tenant, err := tenants.Get(r.Context(), cfg.DefaultTenantSlug) if err != nil { http.Error(w, "default tenant not found", http.StatusInternalServerError) return diff --git a/server/backend/internal/httpapi/manage/templates.go b/server/backend/internal/httpapi/manage/templates.go index 14bd094..ddac2f1 100644 --- a/server/backend/internal/httpapi/manage/templates.go +++ b/server/backend/internal/httpapi/manage/templates.go @@ -250,6 +250,13 @@ const adminTmpl = `
+ @@ -538,6 +545,13 @@ const manageTmpl = ` diff --git a/server/backend/internal/httpapi/router.go b/server/backend/internal/httpapi/router.go index 0d74aae..9f36a5b 100644 --- a/server/backend/internal/httpapi/router.go +++ b/server/backend/internal/httpapi/router.go @@ -6,6 +6,7 @@ import ( "git.az-it.net/az/morz-infoboard/server/backend/internal/config" "git.az-it.net/az/morz-infoboard/server/backend/internal/httpapi/manage" + "git.az-it.net/az/morz-infoboard/server/backend/internal/httpapi/tenant" "git.az-it.net/az/morz-infoboard/server/backend/internal/mqttnotifier" "git.az-it.net/az/morz-infoboard/server/backend/internal/store" ) @@ -136,7 +137,7 @@ func registerManageRoutes(mux *http.ServeMux, d RouterDeps) { // ── JSON API — screens ──────────────────────────────────────────────── // Self-registration: no auth (player calls this on startup). mux.HandleFunc("POST /api/v1/screens/register", - manage.HandleRegisterScreen(d.TenantStore, d.ScreenStore)) + manage.HandleRegisterScreen(d.TenantStore, d.ScreenStore, d.Config)) mux.Handle("GET /api/v1/tenants/{tenantSlug}/screens", authTenant(http.HandlerFunc(manage.HandleListScreens(d.TenantStore, d.ScreenStore)))) mux.Handle("POST /api/v1/tenants/{tenantSlug}/screens", @@ -166,4 +167,12 @@ func registerManageRoutes(mux *http.ServeMux, d RouterDeps) { authOnly(http.HandlerFunc(manage.HandleReorder(d.PlaylistStore, notifier)))) mux.Handle("PATCH /api/v1/playlists/{playlistId}/duration", authOnly(http.HandlerFunc(manage.HandleUpdatePlaylistDuration(d.PlaylistStore)))) + + // ── Tenant self-service dashboard ───────────────────────────────────── + mux.Handle("GET /tenant/{tenantSlug}/dashboard", + authTenant(http.HandlerFunc(tenant.HandleTenantDashboard(d.TenantStore, d.ScreenStore, d.MediaStore)))) + mux.Handle("POST /tenant/{tenantSlug}/upload", + authTenant(http.HandlerFunc(tenant.HandleTenantUpload(d.TenantStore, d.MediaStore, uploadDir)))) + mux.Handle("POST /tenant/{tenantSlug}/media/{mediaId}/delete", + authTenant(http.HandlerFunc(tenant.HandleTenantDeleteMedia(d.TenantStore, d.MediaStore, uploadDir)))) } diff --git a/server/backend/internal/httpapi/tenant/templates.go b/server/backend/internal/httpapi/tenant/templates.go new file mode 100644 index 0000000..323fefd --- /dev/null +++ b/server/backend/internal/httpapi/tenant/templates.go @@ -0,0 +1,299 @@ +package tenant + +const tenantDashTmpl = ` + + + + ++ {{if eq .Orientation "portrait"}}📱{{else}}🖥{{end}} + {{.Name}} +
++ {{if eq .Orientation "portrait"}}Hochformat{{else}}Querformat{{end}} +
+Noch keine Monitore zugewiesen.
+ {{end}} +| Typ | +Titel | +Größe | ++ |
|---|---|---|---|
| {{typeIcon .Type}} | +{{.Title}} | ++ {{if .SizeBytes}}{{humanSize .SizeBytes}}{{else}}–{{end}} + | ++ + | +
Noch keine Medien hochgeladen.
+ {{end}} + +