package retentionapi import "net/http" // CORS ist RET-10: retention-api hatte bislang keine CORS-Header, ein // echter Browser blockierte daher Fetches vom RET-06-Frontend (anderer // Origin/Port) — real per Sichtprüfung gefunden, nicht durch die // ursprünglichen RET-06/RET-06-API-Prüfungen erfasst (curl/Vitest-Fetch // erzwingen keine Same-Origin-Policy). Erlaubt GENAU EINEN konfigurierten // Origin, kein Wildcard — verhindert, dass jede beliebige Website die // Fristenkonfiguration im Namen eines eingeloggten Nutzers aufrufen kann. func CORS(allowedOrigin string, next http.Handler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { origin := r.Header.Get("Origin") if origin != "" && origin == allowedOrigin { w.Header().Set("Access-Control-Allow-Origin", allowedOrigin) w.Header().Set("Vary", "Origin") w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") w.Header().Set("Access-Control-Allow-Headers", "Content-Type, X-User-Role") } if r.Method == http.MethodOptions { w.WriteHeader(http.StatusNoContent) return } next.ServeHTTP(w, r) } }