diff --git a/src/app.js b/src/app.js index 4e31252..c7996f7 100644 --- a/src/app.js +++ b/src/app.js @@ -1,5 +1,5 @@ // src/app.js -console.log('CWD:', process.cwd()); +console.log("CWD:", process.cwd()); require("dotenv").config(); const setupMiddleware = require("./middleware"); @@ -7,6 +7,9 @@ const { manualLogger } = require("./utils/logging"); // const path = require("path"); +const { startTokenCleanup } = require("./utils/tokenCleanup"); +startTokenCleanup(); + app = setupMiddleware(); port = process.env.PORT || 3400; diff --git a/src/middleware/baseContext.js b/src/middleware/baseContext.js index 8676f74..a0d17a8 100644 --- a/src/middleware/baseContext.js +++ b/src/middleware/baseContext.js @@ -1,15 +1,12 @@ // src/middleware/baseContext.js const getBaseContext = require("../utils/baseContext"); +const { qualifyLink } = require("../utils/qualifyLinks"); +const { generateToken } = require("../utils/adminToken"); module.exports = async function baseContextMiddleware(req, res, next) { const isAuthenticated = req.isAuthenticated; - - const scheme = req.protocol; - const host = req.get("host"); - const requestUri = req.originalUrl; - const rd = `${scheme}://${host}${requestUri}`; - - const adminLoginUrl = `${process.env.AUTH_LOGIN}${encodeURIComponent(rd)}`; + const token = generateToken(); + const adminLoginUrl = qualifyLink(`/${token}`); const baseContext = await getBaseContext(isAuthenticated, { adminLoginUrl }); res.locals.baseContext = baseContext; diff --git a/src/routes/admin.js b/src/routes/admin.js index c2ee4fc..84f69d4 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -1,4 +1,4 @@ -// src/routes/admin.js (or wherever your router is) +// src/routes/admin.js const express = require("express"); const { validateToken, cleanupTokens } = require("../utils/adminToken"); const HttpError = require("../utils/HttpError"); @@ -6,7 +6,7 @@ // Middleware to cleanup expired tokens periodically router.use((req, res, next) => { - // Clean up expired tokens on each request (you might want to do this less frequently) + // Clean up expired tokens on each request if (Math.random() < 0.1) { // 10% chance to cleanup on each request cleanupTokens(); @@ -37,8 +37,10 @@ const adminLoginUrl = `${process.env.AUTH_LOGIN}${rd}`; res.set("Content-Type", "text/html"); - res.render("pages/redirect", { adminLoginUrl }); - // res.redirect(301, adminLoginUrl); + res + .status(301) + .set("Location", adminLoginUrl) + .render("pages/redirect", { adminLoginUrl }); }); module.exports = router; diff --git a/src/routes/index.js b/src/routes/index.js index 6c97aa4..6902e98 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -7,6 +7,7 @@ const blog_index = require("./blog_index"); const csrfToken = require("../middleware/csrfToken"); const errorPage = require("./errorPage"); +const admin = require("./admin"); const contact = require("./contact"); const sitemap = require("./sitemap"); @@ -25,6 +26,7 @@ }); router.use(logs); +router.use(admin); router.post("/track", analytics); router.post("/analytics", analytics); diff --git a/src/views/pages/redirect.handlebars b/src/views/pages/redirect.handlebars index 93a078a..e8d85e3 100644 --- a/src/views/pages/redirect.handlebars +++ b/src/views/pages/redirect.handlebars @@ -16,7 +16,6 @@