diff --git a/server/routes.js b/server/routes.js index c19b00b..e27a59c 100644 --- a/server/routes.js +++ b/server/routes.js @@ -63,16 +63,44 @@ export function setupRoutes(app, __dirname) { } // Prüfe, ob Benutzer eingeloggt ist - // Verwende extractSessionId wie in broadcast.js, um die gleiche Session-ID zu erhalten - const sessionId = extractSessionId(req); + // Versuche zuerst, Session-ID aus Cookie zu extrahieren (wie beim Login) + let sessionId = extractSessionId(req); - console.log(`[Bild-Upload] Session-ID (aus Cookie): ${sessionId}, req.sessionID: ${req.sessionID}, Alle Clients:`, Array.from(getClientsMap().keys())); + // Wenn extractSessionId eine UUID generiert hat (kein Cookie gefunden), + // versuche req.sessionID zu verwenden + const isUUID = sessionId && sessionId.length === 36 && sessionId.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i); + + if (isUUID) { + // extractSessionId hat eine UUID generiert, verwende req.sessionID stattdessen + sessionId = req.sessionID; + if (sessionId && sessionId.startsWith('s:')) { + const parts = sessionId.split('.'); + if (parts.length > 0) { + sessionId = parts[0].substring(2); // Entferne 's:' Präfix + } + } + } + + console.log(`[Bild-Upload] Session-ID: ${sessionId}, req.sessionID (roh): ${req.sessionID}, Cookie vorhanden: ${!isUUID}, Alle Clients:`, Array.from(getClientsMap().keys())); const clientsMap = getClientsMap(); - const client = clientsMap.get(sessionId); + let client = clientsMap.get(sessionId); + + // Wenn kein Client gefunden wurde und req.sessionID vorhanden ist, versuche auch mit bereinigter req.sessionID + if (!client && req.sessionID) { + const cleanedSessionId = req.sessionID.startsWith('s:') ? req.sessionID.split('.')[0].substring(2) : req.sessionID; + if (cleanedSessionId !== sessionId) { + client = clientsMap.get(cleanedSessionId); + if (client) { + console.log(`[Bild-Upload] Client gefunden mit bereinigter req.sessionID: ${cleanedSessionId}`); + sessionId = cleanedSessionId; + } + } + } if (!client || !client.userName) { console.log(`[Bild-Upload] Client nicht gefunden für Session-ID: ${sessionId}`); + console.log(`[Bild-Upload] Cookies: ${req.headers.cookie || 'keine'}`); // Lösche hochgeladenes Bild, wenn nicht eingeloggt unlinkSync(req.file.path); return res.status(401).json({ error: 'Nicht eingeloggt' });