try to fix issues with logging in on linux

This commit is contained in:
2026-05-06 11:16:26 +02:00
parent 82c67130dd
commit dce28d3eb3
+26 -9
View File
@@ -20,11 +20,11 @@ const wss = new WebSocketServer({server});
let db; let db;
const authCookieOptions = { const authCookieOptions = {
httpOnly: true, httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "Strict", sameSite: "Strict",
path: "/" path: "/"
}; };
app.set("trust proxy", 1);
app.use(express.json()); app.use(express.json());
app.use("/swagger-ui", swaggerUi.serve, swaggerUi.setup(swaggerDocument)); app.use("/swagger-ui", swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.use(cookieParser()); app.use(cookieParser());
@@ -62,11 +62,26 @@ function getAuthRequestDetails(request) {
method: request.method, method: request.method,
path: request.originalUrl || request.url, path: request.originalUrl || request.url,
userAgent: request.get("user-agent"), userAgent: request.get("user-agent"),
protocol: request.protocol,
forwardedProto: request.get("x-forwarded-proto"),
secure: request.secure,
hasBearerHeader: Boolean(request.headers.authorization), hasBearerHeader: Boolean(request.headers.authorization),
hasAuthCookie: Boolean(request.cookies?.authorization) hasAuthCookie: Boolean(request.cookies?.authorization)
}; };
} }
function isSecureAuthRequest(request) {
const forwardedProto = request.get("x-forwarded-proto");
return request.secure || forwardedProto?.split(",")[0].trim() === "https";
}
function getAuthCookieOptions(request) {
return {
...authCookieOptions,
secure: isSecureAuthRequest(request)
};
}
/* /*
Here are Helper function ----------------------------------------------------------------------------------------------- Here are Helper function -----------------------------------------------------------------------------------------------
*/ */
@@ -170,14 +185,16 @@ function generateAccessToken(user) {
return token; return token;
} }
function setAuthCookie(response, token) { function setAuthCookie(request, response, token) {
const cookieOptions = getAuthCookieOptions(request);
logAuthEvent("info", "Setting authorization cookie", { logAuthEvent("info", "Setting authorization cookie", {
secure: authCookieOptions.secure, ...getAuthRequestDetails(request),
sameSite: authCookieOptions.sameSite, secure: cookieOptions.secure,
httpOnly: authCookieOptions.httpOnly, sameSite: cookieOptions.sameSite,
httpOnly: cookieOptions.httpOnly,
token: getTokenLogDetails(token) token: getTokenLogDetails(token)
}); });
response.cookie("authorization", token, authCookieOptions); response.cookie("authorization", token, cookieOptions);
} }
function normalizeUsername(username) { function normalizeUsername(username) {
@@ -306,7 +323,7 @@ app.post("/register", async (request, response) => {
username, username,
token: getTokenLogDetails(token) token: getTokenLogDetails(token)
}); });
setAuthCookie(response, token); setAuthCookie(request, response, token);
logAuthEvent("info", "Register request completed", {username}); logAuthEvent("info", "Register request completed", {username});
response.json({username, token}); response.json({username, token});
}); });
@@ -371,7 +388,7 @@ app.post("/login", async (request, response) => {
username, username,
token: getTokenLogDetails(token) token: getTokenLogDetails(token)
}); });
setAuthCookie(response, token); setAuthCookie(request, response, token);
logAuthEvent("info", "Login request completed", { logAuthEvent("info", "Login request completed", {
username, username,
token: getTokenLogDetails(token) token: getTokenLogDetails(token)
@@ -442,7 +459,7 @@ app.delete("/logout", authenticateToken, async (request, response) => {
username, username,
previousToken: getTokenLogDetails(user.token) previousToken: getTokenLogDetails(user.token)
}); });
response.clearCookie("authorization", authCookieOptions); response.clearCookie("authorization", getAuthCookieOptions(request));
logAuthEvent("info", "Logout request completed", {username}); logAuthEvent("info", "Logout request completed", {username});
response.json({message: "Logged out successfully."}); response.json({message: "Logged out successfully."});
}); });