Abmelden über beide Domains reparieren
Deploy / check (push) Has been cancelled
Deploy / deploy (push) Has been cancelled

Auf der Bot-Seite ließ sich das Abmelden nicht durchführen, und auf dem Hub
kam beim Profil ein 401 — beides dieselbe Ursache: Ein Cookie, das ohne
Domain-Angabe gesetzt wurde, gilt nur für genau diesen Host und ist
technisch ein anderes als das domain-weite. Wer sich vor dem Umstellen auf
die gemeinsame Login-Domain angemeldet hatte, trug also noch das alte,
host-gebundene Cookie mit sich herum. Das Abmelden löschte nur die
domain-weite Variante, das alte blieb liegen — und auf der Hub-Domain war
es nie vorhanden, daher dort die fehlende Anmeldung.

Jetzt räumt das Abmelden beide Varianten ab, und das Anmelden entfernt die
host-gebundene Altlast gleich mit, damit gar nicht erst zwei Cookies
nebeneinander existieren.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 15:35:30 +02:00
co-authored by Claude Fable 5
parent 478e47684a
commit bdbd35883c
+12 -4
View File
@@ -128,8 +128,12 @@ export function registerAuthRoutes(app, client) {
// Mit gesetzter Cookie-Domain (z. B. .d4rkst3r.de) gilt die Anmeldung
// auf Hub und Bot-Seite gleichzeitig
const domain = cookieDomain();
reply.clearCookie(STATE_COOKIE, { path: '/auth' });
// Altlast aufräumen: ein früher host-gebunden gesetztes Cookie würde
// sonst neben dem neuen bestehen bleiben und beim Abmelden übrig sein
if (domain) reply.clearCookie(SESSION_COOKIE, { path: '/' });
return reply
.clearCookie(STATE_COOKIE, { path: '/auth' })
.setCookie(SESSION_COOKIE, JSON.stringify(session), {
path: '/', httpOnly: true, sameSite: 'lax', maxAge: 7 * 24 * 3600, signed: true,
...(domain ? { domain } : {}),
@@ -140,9 +144,13 @@ export function registerAuthRoutes(app, client) {
});
app.get('/auth/logout', async (request, reply) => {
// Beide Varianten löschen: Ein Cookie, das ohne Domain-Angabe gesetzt
// wurde, gilt nur für genau diesen Host und ist ein anderes als das
// domain-weite. Wer sich vor der Umstellung angemeldet hat, hat noch
// das alte — würden wir nur eins löschen, bliebe er angemeldet.
reply.clearCookie(SESSION_COOKIE, { path: '/' });
const domain = cookieDomain();
return reply
.clearCookie(SESSION_COOKIE, { path: '/', ...(domain ? { domain } : {}) })
.redirect('/');
if (domain) reply.clearCookie(SESSION_COOKIE, { path: '/', domain });
return reply.redirect('/');
});
}