UNPKG

@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
"use strict"; 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