Files
PantryHub/config/express.js
T
jurgenr ce68182c08 Applicatie afmaken en GUI-flow herstellen
Voegt boodschappenlijsten, productbeheer, realtime synchronisatie en browsercache-updates toe. Herstelt login- en sessiegedrag en maakt database-seeding herhaalbaar.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-07 20:44:05 +02:00

118 lines
2.0 KiB
JavaScript

const express = require("express");
const helmet = require("helmet");
const compression = require("compression");
const morgan = require("morgan");
const cookieParser = require("cookie-parser");
const path = require("path");
const expressLayouts = require("express-ejs-layouts");
const flash = require("connect-flash");
const userMiddleware = require("../middleware/user");
const session = require("./session");
module.exports = () => {
const app = express();
app.set("view engine", "ejs");
app.set(
"views",
path.join(__dirname, "../views")
);
app.use(expressLayouts);
app.set(
"layout",
"layouts/main"
);
app.use(
helmet({
contentSecurityPolicy: false
})
);
app.use(compression());
app.use(morgan("dev"));
app.use(cookieParser());
app.use(
express.urlencoded({
extended: true
})
);
app.use(express.json());
app.use(session);
app.use(flash());
app.use(userMiddleware);
app.use((req, res, next) => {
res.set("X-PantryHub-Worktree", __dirname);
res.locals.user = req.user || null;
res.locals.success = req.flash("success");
res.locals.error = req.flash("error");
res.locals.info = req.flash("info");
res.locals.warning = req.flash("warning");
res.locals.title = "PantryHub";
next();
});
app.get("/__version", (req, res) => {
res.set("Cache-Control", "no-store");
res.json({
app: "PantryHub",
root: path.join(__dirname, ".."),
pid: process.pid
});
});
app.use(
express.static(
path.join(__dirname, "../public")
)
);
app.use(
"/api",
require("../routes/api")
);
app.use(
"/",
require("../routes/auth")
);
app.use(
"/",
require("../routes/web")
);
app.use((req, res) => {
res.status(404)
.render("errors/404");
});
return app;
};