TaigaProperties.kt
package de.werkbaum.integration.taiga
import org.springframework.boot.context.properties.ConfigurationProperties
/**
* Der Taiga-Proxy (D91).
*
* Die Basis-URL der Taiga-API ist **Server-Konfiguration**, nie
* Request-Parameter — ein Proxy, der sein Ziel vom Aufrufer nimmt, ist ein
* offenes Relay (die SSRF-Falle naiver Proxies). Leer heißt: Feature aus;
* alle Taiga-Endpunkte antworten dann mit 503, und `GET /info` meldet
* `taiga: false`, sodass der Editor die Aktionen gar nicht erst zeigt.
*/
@ConfigurationProperties(prefix = "werkbaum.taiga")
data class TaigaProperties(
/**
* Basis-URL der Taiga-**API**, nicht des Frontends — bei der Zielinstanz
* liegt sie auf einem eigenen Host (`https://plan-api.hostsharing.net/api/v1`,
* aus deren `conf.json` gelesen; D91-Nachtrag 1).
*/
val apiUrl: String = "",
/**
* Basis-URL des Taiga-**Frontends** (`https://plan.hostsharing.net`) —
* nicht aus der API-URL ableitbar, bei der Zielinstanz liegen beide auf
* verschiedenen Hosts. Nur für die Links des Editors (`GET /info` meldet
* sie als `taigaWeb`); leer heißt: keine Links, die Anlage funktioniert
* trotzdem.
*/
val webUrl: String = "",
/**
* Login-Typ für `POST /auth`: `ldap` (LDAP-Plugin, so die Zielinstanz)
* oder `normal`. Nur der Auth-Endpunkt braucht ihn; bei der angekündigten
* OIDC-Umstellung wird er durch den Redirect-Flow ersetzt.
*/
val authType: String = "ldap",
) {
val configured: Boolean get() = apiUrl.isNotBlank()
}