48 lines
1.2 KiB
JavaScript
48 lines
1.2 KiB
JavaScript
const { configExists, loadConfig } = require("../config-manager");
|
|
|
|
/**
|
|
* Leitet beim ersten Programmstart automatisch zu /setup um,
|
|
* solange config.enc fehlt oder DB-Daten unvollständig sind.
|
|
*/
|
|
module.exports = function requireSetup(req, res, next) {
|
|
// ✅ Setup immer erlauben
|
|
if (req.path.startsWith("/setup")) return next();
|
|
|
|
// ✅ Static niemals blockieren
|
|
if (req.path.startsWith("/public")) return next();
|
|
if (req.path.startsWith("/css")) return next();
|
|
if (req.path.startsWith("/js")) return next();
|
|
if (req.path.startsWith("/images")) return next();
|
|
if (req.path.startsWith("/uploads")) return next();
|
|
if (req.path.startsWith("/favicon")) return next();
|
|
|
|
// ✅ Login/Logout erlauben
|
|
if (req.path.startsWith("/login")) return next();
|
|
if (req.path.startsWith("/logout")) return next();
|
|
|
|
// ✅ Wenn config.enc fehlt -> Setup erzwingen
|
|
if (!configExists()) {
|
|
return res.redirect("/setup");
|
|
}
|
|
|
|
// ✅ Wenn config existiert aber DB Daten fehlen -> Setup erzwingen
|
|
let cfg = null;
|
|
try {
|
|
cfg = loadConfig();
|
|
} catch (e) {
|
|
cfg = null;
|
|
}
|
|
|
|
const ok =
|
|
cfg?.db?.host &&
|
|
cfg?.db?.user &&
|
|
cfg?.db?.password &&
|
|
cfg?.db?.name;
|
|
|
|
if (!ok) {
|
|
return res.redirect("/setup");
|
|
}
|
|
|
|
next();
|
|
};
|