From e43c330594fc60a17960071a17c158a1184332f6 Mon Sep 17 00:00:00 2001 From: Giuseppe Raffa <77052701+sesee3@users.noreply.github.com> Date: Tue, 21 Apr 2026 20:27:44 +0200 Subject: [PATCH] tempfix: added some debug console logs for easiest debug --- auth/src/core/auth.core.js | 60 +++++++++++++++++++++------ auth/src/index.js | 6 ++- auth/src/middlewares/user.security.js | 15 ++++++- auth/src/routes/auth.js | 13 +++--- auth/src/storage/database.js | 28 ++++++++++--- 5 files changed, 96 insertions(+), 26 deletions(-) diff --git a/auth/src/core/auth.core.js b/auth/src/core/auth.core.js index 3cf534c..fd03d5f 100644 --- a/auth/src/core/auth.core.js +++ b/auth/src/core/auth.core.js @@ -33,23 +33,34 @@ async function register(username, password) { * Esegue il login di un utente */ async function login(username, password) { + console.log('[DEBUG AUTH] login() START - username:', username); + const result = await query('SELECT id, username, password_hash, created_at FROM users WHERE username = $1', [username]); + console.log('[DEBUG AUTH] login() - query result rows:', result.rows.length); + if (result.rows.length === 0) { + console.log('[DEBUG AUTH] login() - user not found'); throw new Error('No user matched') } const user = result.rows[0]; + console.log('[DEBUG AUTH] login() - user found:', { id: user.id, username: user.username }); + const isValid = await security.verifyPassword(password, user.password_hash); + console.log('[DEBUG AUTH] login() - password valid:', isValid); if (!isValid) { + console.log('[DEBUG AUTH] login() - password mismatch'); throw new Error('Password mismatch') } - return { + const result_obj = { id: user.id, username: user.username, created: user.created_at - } + }; + console.log('[DEBUG AUTH] login() SUCCESS - returning user:', result_obj); + return result_obj; } /** @@ -69,38 +80,61 @@ async function logout(sessionID) { * Crea una nuova sessione per un utente che ha appaena eseguito il login */ async function newSession(userId, userAgent, ip) { + console.log('[DEBUG AUTH] newSession() START - userId:', userId); + const id = uuid(); const sessionCode = security.generateSessionCode(); const metadata = track.getBasicMetadata(userAgent); + console.log('[DEBUG AUTH] newSession() - sessionCode generated:', sessionCode, 'metadata:', metadata); - await query( + const insertResult = await query( `INSERT INTO sessions (id, user_id, session_code, encoded_username, ip_address, user_agent, browser, os, device_type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`, [id, userId, sessionCode, '', ip, userAgent, metadata.browser, metadata.os, metadata.device_type] ); + console.log('[DEBUG AUTH] newSession() - INSERT result:', { rowCount: insertResult.rowCount }); - return { id, sessionCode }; + const result = { id, sessionCode }; + console.log('[DEBUG AUTH] newSession() SUCCESS - returning:', result); + return result; } /** * Valida una sessione tramite il suo UUID */ async function validateSession(sessionId) { + console.log('[DEBUG AUTH] validateSession() START - sessionId:', sessionId); + if (!sessionId || typeof sessionId !== 'string') { + console.log('[DEBUG AUTH] validateSession() - invalid sessionId type'); throw new Error('Invalid session ID'); } - const result = await query( - 'SELECT s.id, u.is_active FROM sessions s JOIN users u ON s.user_id = u.id WHERE s.id = $1 AND s.is_revoked = FALSE', - [sessionId] - ); + console.log('[DEBUG AUTH] validateSession() - executing query with sessionId:', sessionId); + + try { + const result = await query( + 'SELECT s.id, u.is_active FROM sessions s JOIN users u ON s.user_id = u.id WHERE s.id = $1 AND s.is_revoked = FALSE', + [sessionId] + ); + console.log('[DEBUG AUTH] validateSession() - query SUCCESS, rows:', result.rows.length); - if (result.rows.length === 0) { - throw new Error('Session not found or revoked'); - } + if (result.rows.length === 0) { + console.log('[DEBUG AUTH] validateSession() - session not found or revoked'); + throw new Error('Session not found or revoked'); + } - if (!result.rows[0].is_active) { - throw new Error('User account is not active'); + console.log('[DEBUG AUTH] validateSession() - row data:', result.rows[0]); + + if (!result.rows[0].is_active) { + console.log('[DEBUG AUTH] validateSession() - user not active'); + throw new Error('User account is not active'); + } + + console.log('[DEBUG AUTH] validateSession() SUCCESS'); + } catch (err) { + console.error('[DEBUG AUTH] validateSession() ERROR:', err.message, err.code); + throw err; } } diff --git a/auth/src/index.js b/auth/src/index.js index 66174bf..435aca7 100644 --- a/auth/src/index.js +++ b/auth/src/index.js @@ -134,7 +134,11 @@ app.use((req, res) => { // ─── ERROR HANDLER GLOBALE ────────────────────────────────────────── app.use((err, req, res, _next) => { - console.error('[AUTH] Errore non gestito:', err); + console.error('[ERROR HANDLER] Global error caught:'); + console.error('[ERROR HANDLER] Message:', err.message); + console.error('[ERROR HANDLER] Code:', err.code); + console.error('[ERROR HANDLER] Full error:', err); + console.error('[ERROR HANDLER] Stack:', err.stack); res.status(500).json({ error: 'Errore interno del server' }); }); diff --git a/auth/src/middlewares/user.security.js b/auth/src/middlewares/user.security.js index c0316ac..73b01af 100644 --- a/auth/src/middlewares/user.security.js +++ b/auth/src/middlewares/user.security.js @@ -2,9 +2,13 @@ const jwt = require('../tools/jwt'); const { validateSession } = require('../core/auth.core'); const userAuth = async (req, res, next) => { + console.log('[DEBUG MIDDLEWARE] userAuth() START - path:', req.path); + const token = (req.cookies && req.cookies.auth_token) || jwt.getToken(req.headers['authorization']); + console.log('[DEBUG MIDDLEWARE] token found:', !!token); const redirectToLogin = () => { + console.log('[DEBUG MIDDLEWARE] redirectToLogin()'); if (req.accepts('html')) { const redirect = encodeURIComponent(req.originalUrl); return res.redirect(`/login?redirect=${redirect}`); @@ -13,15 +17,20 @@ const userAuth = async (req, res, next) => { }; if (!token || typeof token !== 'string') { + console.log('[DEBUG MIDDLEWARE] no token or invalid type'); return redirectToLogin(); } if (token.length > 2048) { + console.log('[DEBUG MIDDLEWARE] token too long'); return redirectToLogin(); } const verified = jwt.verifyToken(token); + console.log('[DEBUG MIDDLEWARE] jwt.verifyToken() result - valid:', verified.valid); + if (!verified.valid) { + console.log('[DEBUG MIDDLEWARE] token not valid - reason:', verified.reason); if (req.accepts('html')) { return res.redirect('/login'); } @@ -32,8 +41,11 @@ const userAuth = async (req, res, next) => { } try { + console.log('[DEBUG MIDDLEWARE] calling validateSession() with session_id:', verified.payload.session_id); await validateSession(verified.payload.session_id); - } catch { + console.log('[DEBUG MIDDLEWARE] validateSession() SUCCESS'); + } catch (err) { + console.error('[DEBUG MIDDLEWARE] validateSession() FAILED:', err.message); if (req.accepts('html')) { return res.redirect('/login'); } @@ -41,6 +53,7 @@ const userAuth = async (req, res, next) => { } req.user = verified.payload; + console.log('[DEBUG MIDDLEWARE] auth SUCCESS - user_id:', req.user.user_id); next(); }; diff --git a/auth/src/routes/auth.js b/auth/src/routes/auth.js index 5d37449..6ced122 100644 --- a/auth/src/routes/auth.js +++ b/auth/src/routes/auth.js @@ -84,9 +84,12 @@ router.post('/login', async (req, res) => { } try { - const user = await auth.login(username, password); - const session = await auth.newSession(user.id, req.headers['user-agent'], req.ip); - const token = jwt.generateToken(user, session.id); + console.log('[DEBUG ROUTES] POST /api/auth/login START - username:', username);\n + const user = await auth.login(username, password);\n console.log('[DEBUG ROUTES] auth.login() success - user:', user); + + const session = await auth.newSession(user.id, req.headers['user-agent'], req.ip);\n console.log('[DEBUG ROUTES] auth.newSession() success - session:', session); + + const token = jwt.generateToken(user, session.id);\n console.log('[DEBUG ROUTES] jwt.generateToken() success'); const cookieOptions = { httpOnly: true, @@ -101,12 +104,12 @@ router.post('/login', async (req, res) => { res.cookie('auth_token', token, cookieOptions); res.clearCookie('_csrf'); + console.log('[DEBUG ROUTES] cookies set - redirecting to:', safeRedirect || CONSOLE_URL); const destination = safeRedirect || CONSOLE_URL; res.redirect(destination); } catch (err) { - console.error('[AUTH] Login failed:', err.message); - return loginRedirect('invalid_credentials', safeRedirect); + console.error('[DEBUG ROUTES] Login FAILED:', err.message, err.code, err);\n return loginRedirect('invalid_credentials', safeRedirect); } }); diff --git a/auth/src/storage/database.js b/auth/src/storage/database.js index 02cfc59..5e2247a 100644 --- a/auth/src/storage/database.js +++ b/auth/src/storage/database.js @@ -24,14 +24,30 @@ pool.on('error', (err) => { */ async function query(text, params) { const start = Date.now(); - const result = await pool.query(text, params); - const duration = Date.now() - start; - - if (duration > 100) { - console.warn(`[DB] Slow query (${duration}ms):`, text.substring(0, 80)); + console.log('[DEBUG DB] Executing query:', text.substring(0, 120)); + if (params && params.length > 0) { + console.log('[DEBUG DB] Parameters:', params); } + + try { + const result = await pool.query(text, params); + const duration = Date.now() - start; - return result; + if (duration > 100) { + console.warn(`[DB] Slow query (${duration}ms):`, text.substring(0, 80)); + } + + console.log('[DEBUG DB] Query successful - rows:', result.rowCount, 'duration:', duration + 'ms'); + return result; + } catch (err) { + const duration = Date.now() - start; + console.error('[DEBUG DB] Query FAILED:', err.message); + console.error('[DEBUG DB] Error code:', err.code); + console.error('[DEBUG DB] Query:', text.substring(0, 120)); + console.error('[DEBUG DB] Duration:', duration + 'ms'); + console.error('[DEBUG DB] Full error:', err); + throw err; + } } /**