var createError = require("http-errors"); var express = require("express"); var path = require("path"); var cookieParser = require("cookie-parser"); var logger = require("morgan"); var session = require("express-session"); var indexRouter = require("./routes/index"); var usersRouter = require("./routes/users"); var app = express(); // view engine setup app.set("views", path.join(__dirname, "views")); app.set("view engine", "pug"); app.use(logger("dev")); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); // Session middleware for 2FA app.use( session({ secret: process.env.SESSION_SECRET || "your-secret-key-change-in-production", resave: false, saveUninitialized: false, cookie: { secure: process.env.NODE_ENV === "production", maxAge: 24 * 60 * 60 * 1000, // 24 hours }, }) ); app.use(express.static(path.join(__dirname, "public"))); app.use("/", indexRouter); app.use("/users", usersRouter); // catch 404 and forward to error handler app.use(function (req, res, next) { next(createError(404)); }); // error handler app.use(function (err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get("env") === "development" ? err : {}; // render the error page res.status(err.status || 500); res.render("error"); }); module.exports = app;