feat(handler): HandleCreateScreenUser liest role; UserRole ans Template übergeben

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jesko Anschütz 2026-03-27 21:34:21 +01:00
parent f1dcb4f1d3
commit 03ea3edb8b

View file

@ -201,7 +201,7 @@ func HandleAdminUI(tenants *store.TenantStore, screens *store.ScreenStore, auth
} }
} }
// HandleCreateScreenUser creates a new screen_user for the default tenant. // HandleCreateScreenUser creates a new screen user (role: screen_user or restricted) for the default tenant.
func HandleCreateScreenUser(auth *store.AuthStore) http.HandlerFunc { func HandleCreateScreenUser(auth *store.AuthStore) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil { if err := r.ParseForm(); err != nil {
@ -215,12 +215,17 @@ func HandleCreateScreenUser(auth *store.AuthStore) http.HandlerFunc {
return return
} }
role := r.FormValue("role")
if role != "screen_user" && role != "restricted" {
role = "screen_user"
}
tenantSlug := "morz" tenantSlug := "morz"
if u := reqcontext.UserFromContext(r.Context()); u != nil && u.TenantSlug != "" { if u := reqcontext.UserFromContext(r.Context()); u != nil && u.TenantSlug != "" {
tenantSlug = u.TenantSlug tenantSlug = u.TenantSlug
} }
_, err := auth.CreateScreenUser(r.Context(), tenantSlug, username, password) _, err := auth.CreateScreenUser(r.Context(), tenantSlug, username, password, role)
if err != nil { if err != nil {
slog.Error("create screen user failed", "event", "create_screen_user_failed", slog.Error("create screen user failed", "event", "create_screen_user_failed",
"tenant_slug", tenantSlug, "username", username, "err", err) "tenant_slug", tenantSlug, "username", username, "err", err)
@ -337,6 +342,7 @@ func HandleScreenOverview(screens *store.ScreenStore, schedules *store.ScreenSch
"Cards": cards, "Cards": cards,
"CSRFToken": csrfToken, "CSRFToken": csrfToken,
"GlobalOverride": activeOverride, "GlobalOverride": activeOverride,
"UserRole": u.Role,
}) })
} }
} }
@ -450,6 +456,11 @@ func HandleManageUI(
serverTimezone = time.Now().Location().String() serverTimezone = time.Now().Location().String()
} }
userRole := ""
if u := reqcontext.UserFromContext(r.Context()); u != nil {
userRole = u.Role
}
renderTemplate(w, t, map[string]any{ renderTemplate(w, t, map[string]any{
"Screen": screen, "Screen": screen,
"Tenant": tenant, "Tenant": tenant,
@ -465,6 +476,7 @@ func HandleManageUI(
"CSRFToken": csrfToken, "CSRFToken": csrfToken,
"DisplayState": displayState, "DisplayState": displayState,
"Schedule": schedule, "Schedule": schedule,
"UserRole": userRole,
}) })
} }
} }