- HandleDeleteMediaUI: check err after media.Get before using asset (prevents nil-pointer panic)
- HandleTenantDeleteMedia: add restricted-user ownership check (K3)
- HandleTenantDashboard: filter media list by ownerUserID for restricted users
- SCHEMA.md: correct created_by_user_id to 'text null ... on delete set null'
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Template-Funktion `orientationLabel` in tenant/tenant.go ergänzt (fehlte nach UI-Refactoring)
- `depends_on: mosquitto` aus compose/server-stack.yml entfernt (Service ist auskommentiert)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- HandleManageUI übergibt CSRFToken korrekt ans Template (leeres Hidden-Field
blockierte JS-Inject-Snippet)
- HandleTenantDashboard setzt CSRF-Cookie und befüllt CSRFToken in Template-Daten
- tenant/csrf_helpers.go: setCSRFCookie im tenant-Package (Import-Cycle-Isolation)
- Logout-Formular in tenantDashTmpl hat jetzt statisches CSRF-Hidden-Field
- Doku: POST /logout und POST /login mit CSRF-Anforderungen dokumentiert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>