From 4c59a748d891696707ad8abd1d2540e15148e11b Mon Sep 17 00:00:00 2001 From: cay Date: Sun, 29 Mar 2026 14:29:24 +0100 Subject: [PATCH] dtzj --- routes/login.js | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/routes/login.js b/routes/login.js index 3570343..2882d9c 100644 --- a/routes/login.js +++ b/routes/login.js @@ -44,14 +44,38 @@ router.post("/", async (req, res) => { /* ================================ Prüfen ob User bereits eingeloggt + (aktive Session mit passendem Token) ================================= */ if (user.session_token) { - return res.render("index", { - error: "Dieser Account ist bereits eingeloggt. Bitte zuerst ausloggen.", - servers, - extraServers: [], - }); + // Prüfen ob wirklich eine aktive Session existiert + // durch Vergleich mit dem gespeicherten Token. + // Gibt es noch eine aktive Session → Login blockieren. + // Nach Server-Absturz ist session_token zwar gesetzt, + // aber keine gültige Session mehr vorhanden → + // Token wird einfach überschrieben (alter Login wird gekickt). + const hasActiveSession = req.sessionStore?.sessions + ? await new Promise((resolve) => { + req.sessionStore.all((err, sessions) => { + if (err || !sessions) return resolve(false); + const active = Object.values(sessions).some((s) => { + try { + const parsed = typeof s === "string" ? JSON.parse(s) : s; + return parsed?.user?.token === user.session_token; + } catch { return false; } + }); + resolve(active); + }); + }) + : false; + + if (hasActiveSession) { + return res.render("index", { + error: "Dieser Account ist bereits eingeloggt. Bitte zuerst ausloggen.", + servers, + extraServers: [], + }); + } } /* ================================