feat(backend): Taiga-Proxy — vier schmale Endpunkte, Ziel-URL aus der Server-Konfiguration (D91, #trk.create.proxy)

API First: /taiga/auth, /taiga/projects, /taiga/userstories, /taiga/tasks
in der OpenAPI-Spec; TaigaClient/TaigaProperties in
de.werkbaum.integration.taiga. Die API-URL kommt aus
WERKBAUM_TAIGA_API_URL (nie Request-Parameter — SSRF), das Token je
Aufruf im Header X-Taiga-Token (Authorization muessen OpenAPI-Werkzeuge
als Header-Parameter ignorieren) und geht als Bearer hinaus; der Server
speichert nichts und loggt keine Request-Bodies. Taiga-4xx werden samt
_error_message durchgereicht, 5xx/Netz sind 502, unkonfiguriert 503 —
und GET /info meldet das Feature (taiga). Tests gegen aufgezeichnete
Antwortformen auf einem JDK-HttpServer-Stub (statt WireMock: keine neue
Test-Abhaengigkeit, dieselbe Zusicherung); Gegenprobe: ohne den
type-Durchreich faellt genau der benannte Test. check gruen, 93 %
Coverage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-27 16:33:35 +02:00
co-authored by Claude Fable 5
parent 5a18505571
commit fd0e730656
15 changed files with 1015 additions and 5 deletions
+5
View File
@@ -176,6 +176,11 @@ if [ ! -f "$DIR/env" ]; then
# Solange der Hash leer ist, bleibt GET /api/v1/documents gesperrt
# (D76-Nachtrag 6).
WERKBAUM_MASTER_PASSWORD_HASH=
# Taiga-Proxy (D91): Basis-URL der Taiga-API — nicht des Frontends; bei der
# Zielinstanz liegt sie auf einem eigenen Host. Leer = Feature aus;
# GET /api/v1/info meldet es (taiga).
#WERKBAUM_TAIGA_API_URL=https://plan-api.hostsharing.net/api/v1
ENV
chmod 600 "$DIR/env"
echo " ! $DIR/env angelegt — Master-Passwort-Hash dort eintragen,"