CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
40 lines
1.9 KiB
Go
40 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"gitea.perlbach24.de/scripte/nexarch/internal/svcauth"
|
|
)
|
|
|
|
// registerAdminRoutes schuetzt die Mandantenverwaltung mit Dienst-Token und
|
|
// expliziter CORS-Ursprungsliste (QA-15 F-03 / LIC-07). Der Parameter
|
|
// `superadmin` bleibt die vom authentifizierten Aufrufer behauptete Kennung
|
|
// (Audit-Akteur); eine Sitzungs-basierte Superadmin-Anmeldung ist Folgearbeit.
|
|
func registerAdminRoutes(mux *http.ServeMux, token string, origins []string, list, detail, settings, lifecycle http.HandlerFunc) {
|
|
mux.HandleFunc("/admin/tenants", svcauth.Protect(token, origins, "GET, OPTIONS", list))
|
|
mux.HandleFunc("/admin/tenants/detail", svcauth.Protect(token, origins, "GET, OPTIONS", detail))
|
|
mux.HandleFunc("/admin/tenants/settings", svcauth.Protect(token, origins, "POST, OPTIONS", settings))
|
|
mux.HandleFunc("/admin/tenants/lifecycle", svcauth.Protect(token, origins, "POST, OPTIONS", lifecycle))
|
|
}
|
|
|
|
// registerImportDirectoryRoutes bindet TEN-12s Verwaltungsendpunkte (Add/
|
|
// Remove) ein — dieselbe Superadmin-per-Parameter-Authentifizierung wie
|
|
// registerAdminRoutes, siehe internal/tenantimportdir.Store.requireSuperadmin.
|
|
// EIN unpraefigiertes Pfadmuster (wie die uebrigen Routen dieser Datei),
|
|
// die Methode wird im Handler unterschieden — ein methodenpraefigiertes
|
|
// Muster ("POST /..."/"DELETE /...") wuerde die OPTIONS-Preflight-Anfrage
|
|
// der CORS-Behandlung (svcauth.CORS) am Mux vorbei mit 405 beantworten,
|
|
// bevor sie den Handler ueberhaupt erreicht.
|
|
func registerImportDirectoryRoutes(mux *http.ServeMux, token string, origins []string, add, remove http.HandlerFunc) {
|
|
mux.HandleFunc("/admin/tenants/{slug}/import-directories", svcauth.Protect(token, origins, "POST, DELETE, OPTIONS", func(w http.ResponseWriter, r *http.Request) {
|
|
switch r.Method {
|
|
case http.MethodPost:
|
|
add(w, r)
|
|
case http.MethodDelete:
|
|
remove(w, r)
|
|
default:
|
|
w.WriteHeader(http.StatusMethodNotAllowed)
|
|
}
|
|
}))
|
|
}
|