Fix: Tasks-Endpoints ignorierten die Monolith-Session (sidawo)

bootstrap.php rief session_start() mit Standard-Name PHPSESSID auf,
weil start.inc.php für Endpoint-Requests bewusst nicht geladen wird.
Das führte zu einer leeren Session → contactId = 0 → "Keine Berechtigung".

Lösung: Vor session_start() prüfen ob ein sid*-Cookie vorhanden ist
und ggf. session_name() entsprechend setzen, damit Endpoints und
Monolith dieselbe Session nutzen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 13:56:17 +02:00
parent cf97a52128
commit 55e6d4c583

View File

@@ -260,6 +260,18 @@ if (!defined('TASK_CERT_BOOTSTRAPPED')) {
}
if (session_status() === PHP_SESSION_NONE) {
// Endpoint-Requests überspringen start.inc.php (kein session_name-Setup durch den Monolith).
// Cookie-Detection stellt sicher, dass wir dieselbe Session wie der Monolith verwenden
// (Monolith setzt den Session-Namen auf "sid{site_code}", z.B. "sidawo").
if (session_name() === 'PHPSESSID') {
foreach (array_keys($_COOKIE) as $_tc_sn) {
if (strncmp($_tc_sn, 'sid', 3) === 0) {
session_name($_tc_sn);
break;
}
}
unset($_tc_sn);
}
session_start();
}