From 30f4ca6701b514f151586b8b066eb5253d0f5d38 Mon Sep 17 00:00:00 2001 From: Sven laptop Date: Fri, 25 Sep 2026 00:02:14 +0200 Subject: [PATCH] Fix error logging --- auth_api/index.js | 20 +++++++++++++++----- employee_api/index.js | 9 +++++++-- error_log_api/index.js | 9 +++++++-- transit_api/lib/report-error.js | 10 ++++++++-- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/auth_api/index.js b/auth_api/index.js index bcc5198..f061a63 100644 --- a/auth_api/index.js +++ b/auth_api/index.js @@ -37,7 +37,7 @@ function friendlyErrorMessage(statusCode) { async function reportError({ partofservice, error }) { try { - await fetch(ERROR_LOG_API_URL, { + const response = await fetch(ERROR_LOG_API_URL, { method: "POST", headers: { "Content-Type": "application/json", @@ -49,7 +49,12 @@ async function reportError({ partofservice, error }) { error, }), }); - } catch (_) {} + if (!response.ok) { + log("warn", "Error log forward failed", { status: response.status, partofservice }); + } + } catch (err) { + log("warn", "Error log forward failed", { error: err.message, partofservice }); + } } function reportUnhandled(context, err) { @@ -75,6 +80,11 @@ app.use((req, res, next) => { partofservice: `${req.method} ${req.originalUrl}`, error: rawError, }); + // /login errors are client-actionable: pass the specific message through + // instead of masking it with the generic session-expired text. + if (req.method === "POST" && req.path === "/login") { + return originalJson(body); + } return originalJson({ error: friendlyErrorMessage(res.statusCode) }); } return originalJson(body); @@ -95,7 +105,7 @@ app.post("/login", async (req, res) => { try { const { userCode, password } = req.body; if (!userCode || !password) - return res.status(400).json({ error: "userCode and password required" }); + return res.status(400).json({ error: "Vul gebruikerscode en wachtwoord in." }); const result = await db.query( "SELECT id, usercode, password FROM workers.users WHERE usercode = $1", @@ -104,13 +114,13 @@ app.post("/login", async (req, res) => { const user = result.rows[0]; if (!user) { log("warn", "Login attempt for non-existent user", { userCode }); - return res.status(401).json({ error: "invalid_credentials" }); + return res.status(401).json({ error: "Ongeldige gebruikerscode of wachtwoord." }); } const ok = await bcrypt.compare(password, user.password); if (!ok) { log("warn", "Invalid password for user", { userCode }); - return res.status(401).json({ error: "invalid_credentials" }); + return res.status(401).json({ error: "Ongeldige gebruikerscode of wachtwoord." }); } const isAdmin = ADMIN_USER_CODES.has(Number(user.usercode)); diff --git a/employee_api/index.js b/employee_api/index.js index dd6d11b..b9b041a 100644 --- a/employee_api/index.js +++ b/employee_api/index.js @@ -33,7 +33,7 @@ function friendlyErrorMessage(statusCode) { async function reportError({ partofservice, error }) { try { - await fetch(ERROR_LOG_API_URL, { + const response = await fetch(ERROR_LOG_API_URL, { method: "POST", headers: { "Content-Type": "application/json", @@ -45,7 +45,12 @@ async function reportError({ partofservice, error }) { error, }), }); - } catch (_) {} + if (!response.ok) { + log("warn", "Error log forward failed", { status: response.status, partofservice }); + } + } catch (err) { + log("warn", "Error log forward failed", { error: err.message, partofservice }); + } } function reportUnhandled(context, err) { diff --git a/error_log_api/index.js b/error_log_api/index.js index d24efc5..8eff6d1 100644 --- a/error_log_api/index.js +++ b/error_log_api/index.js @@ -62,7 +62,7 @@ function toFriendlyError(statusCode) { async function reportError({ partofservice, error }) { try { - await fetch(ERROR_LOG_API_URL, { + const response = await fetch(ERROR_LOG_API_URL, { method: "POST", headers: { "Content-Type": "application/json", @@ -74,7 +74,12 @@ async function reportError({ partofservice, error }) { error, }), }); - } catch (_) {} + if (!response.ok) { + log("warn", "Error log forward failed", { status: response.status, partofservice }); + } + } catch (err) { + log("warn", "Error log forward failed", { error: err.message, partofservice }); + } } function reportUnhandled(context, err) { diff --git a/transit_api/lib/report-error.js b/transit_api/lib/report-error.js index 90fcc1f..b0cce0e 100644 --- a/transit_api/lib/report-error.js +++ b/transit_api/lib/report-error.js @@ -1,9 +1,10 @@ const { ERROR_LOG_API_URL } = require("./env"); +const { log } = require("./log"); async function reportError({ partofservice, error }) { try { - await fetch(ERROR_LOG_API_URL, { + const response = await fetch(ERROR_LOG_API_URL, { method: "POST", headers: { "Content-Type": "application/json", @@ -15,7 +16,12 @@ async function reportError({ partofservice, error }) { error, }), }); - } catch (_) {} + if (!response.ok) { + log("warn", "Error log forward failed", { status: response.status, partofservice }); + } + } catch (err) { + log("warn", "Error log forward failed", { error: err.message, partofservice }); + } }