From ac6a4cd0eafc3fbc46a1db5d00755876f1b919f1 Mon Sep 17 00:00:00 2001 From: ulsklyc <108589275+ulsklyc@users.noreply.github.com> Date: Wed, 25 Mar 2026 09:22:00 +0100 Subject: [PATCH] fix: navigateTo undefined + CSRF-Cookie Secure-Flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - router.js: navigateTo() existierte nicht → ReferenceError nach fehlgeschlagenem auth.me(). Ersetzt durch navigate() + currentPath-Reset damit die Weiterleitung nicht durch den currentPath-Guard geblockt wird. - csrf.js: SESSION_SECURE=false wurde nicht berücksichtigt → CSRF-Cookie war über HTTP nicht für JS lesbar → alle schreibenden API-Calls nach Login scheiterten mit 403. Co-Authored-By: Claude Sonnet 4.6 --- public/router.js | 6 ++++-- server/middleware/csrf.js | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/public/router.js b/public/router.js index 0beb1e6..3b3aeb4 100644 --- a/public/router.js +++ b/public/router.js @@ -62,13 +62,15 @@ async function navigate(path, pushState = true) { const result = await auth.me(); currentUser = result.user; } catch { - navigateTo('/login', true); + currentPath = null; // Reset damit navigate('/login') nicht geblockt wird + navigate('/login'); return; } } if (!route.requiresAuth && currentUser && path === '/login') { - navigateTo('/', true); + currentPath = null; + navigate('/'); return; } diff --git a/server/middleware/csrf.js b/server/middleware/csrf.js index 2860748..fcb301a 100644 --- a/server/middleware/csrf.js +++ b/server/middleware/csrf.js @@ -39,7 +39,8 @@ function csrfMiddleware(req, res, next) { res.cookie('csrf-token', req.session.csrfToken, { httpOnly: false, sameSite: 'strict', - secure: process.env.NODE_ENV === 'production', + secure: process.env.SESSION_SECURE === 'false' ? false + : process.env.NODE_ENV === 'production', maxAge: 1000 * 60 * 60 * 24 * 7, // 7 Tage (gleich wie Session) });