@fdm-monster/server
Version:
FDM Monster is a bulk OctoPrint manager to set up, configure and monitor 3D printers. Our aim is to provide extremely optimized websocket performance and reliability.
58 lines (57 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
interceptRoles: function() {
return interceptRoles;
},
validateWizardCompleted: function() {
return validateWizardCompleted;
}
});
const _awilixexpress = require("awilix-express");
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
const validateWizardCompleted = (0, _awilixexpress.inject)((configService, settingsStore, loggerFactory)=>async (req, res, next)=>{
const logger = loggerFactory(validateWizardCompleted.name);
const isDemoMode = configService.isDemoMode();
if (isDemoMode || !!settingsStore.getWizardSettings()?.wizardCompleted) {
next();
return;
}
const allowedPaths = [
"/api/first-time-setup/complete",
"/api/first-time-setup/validate",
"/api/test",
"/api/auth/login-required"
];
if (allowedPaths.includes(req.path) || !req.path.startsWith("/api")) {
next();
return;
} else {
logger.error("Wizard not completed", req.path);
throw new _runtimeexceptions.ForbiddenError(`First-time-setup not completed, these api paths are enabled: ${allowedPaths.join(", ")}`);
}
});
const interceptRoles = (0, _awilixexpress.inject)((settingsStore, roleService, isTypeormMode)=>async (req, res, next)=>{
const serverSettings = settingsStore.getSettings();
if (isTypeormMode) {
req.roles = (req.user?.roles ?? []).map((r)=>r.roleId);
} else {
req.roles = req.user?.roles;
}
if (serverSettings && !req.user) {
const roleName = await roleService.getAppDefaultRole();
req.roles = [
roleName
];
}
next();
});
//# sourceMappingURL=global.middleware.js.map