@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.
108 lines (107 loc) • 5.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "FirstTimeSetupController", {
enumerable: true,
get: function() {
return FirstTimeSetupController;
}
});
const _awilixexpress = require("awilix-express");
const _serverconstants = require("../server.constants");
const _validators = require("../handlers/validators");
const _settingvalidation = require("./validation/setting.validation");
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
const _authorizationconstants = require("../constants/authorization.constants");
const _settingsstore = require("../state/settings.store");
const _express = require("express");
const _userserviceinterface = require("../services/interfaces/user-service.interface");
const _roleserviceinterface = require("../services/interfaces/role-service.interface");
function _ts_decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function _ts_metadata(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
}
class FirstTimeSetupController {
settingsStore;
roleService;
userService;
constructor(settingsStore, roleService, userService){
this.settingsStore = settingsStore;
this.roleService = roleService;
this.userService = userService;
}
async validateWizard(req, res) {
const { rootUsername } = await (0, _validators.validateMiddleware)(req, _settingvalidation.wizardSettingsSchema);
await this.roleService.getSynchronizedRoleByName(_authorizationconstants.ROLES.ADMIN);
if (this.settingsStore.isWizardCompleted()) {
throw new _runtimeexceptions.ForbiddenError("Wizard already completed");
}
const user = await this.userService.findRawByUsername(rootUsername?.toLowerCase());
if (!!user) {
throw new _runtimeexceptions.BadRequestException("This user already exists");
}
return res.send();
}
async completeWizard(req, res) {
const { loginRequired, registration, rootUsername, rootPassword } = await (0, _validators.validateMiddleware)(req, _settingvalidation.wizardSettingsSchema);
if (this.settingsStore.isWizardCompleted()) {
throw new _runtimeexceptions.ForbiddenError("Wizard already completed");
}
const role = await this.roleService.getSynchronizedRoleByName(_authorizationconstants.ROLES.ADMIN);
const user = await this.userService.findRawByUsername(rootUsername?.toLowerCase());
if (!!user) {
throw new _runtimeexceptions.BadRequestException("This user already exists");
}
await this.userService.register({
username: rootUsername,
password: rootPassword,
roles: [
role.id
],
isRootUser: true,
isVerified: true,
isDemoUser: false,
needsPasswordChange: false
});
await this.settingsStore.setLoginRequired(loginRequired);
await this.settingsStore.setRegistrationEnabled(registration);
await this.settingsStore.setWizardCompleted(_serverconstants.AppConstants.currentWizardVersion);
return res.send();
}
}
_ts_decorate([
(0, _awilixexpress.POST)(),
(0, _awilixexpress.route)("/validate"),
_ts_metadata("design:type", Function),
_ts_metadata("design:paramtypes", [
typeof _express.Request === "undefined" ? Object : _express.Request,
typeof _express.Response === "undefined" ? Object : _express.Response
]),
_ts_metadata("design:returntype", Promise)
], FirstTimeSetupController.prototype, "validateWizard", null);
_ts_decorate([
(0, _awilixexpress.POST)(),
(0, _awilixexpress.route)("/complete"),
_ts_metadata("design:type", Function),
_ts_metadata("design:paramtypes", [
typeof _express.Request === "undefined" ? Object : _express.Request,
typeof _express.Response === "undefined" ? Object : _express.Response
]),
_ts_metadata("design:returntype", Promise)
], FirstTimeSetupController.prototype, "completeWizard", null);
FirstTimeSetupController = _ts_decorate([
(0, _awilixexpress.route)(_serverconstants.AppConstants.apiRoute + "/first-time-setup"),
_ts_metadata("design:type", Function),
_ts_metadata("design:paramtypes", [
typeof _settingsstore.SettingsStore === "undefined" ? Object : _settingsstore.SettingsStore,
typeof _roleserviceinterface.IRoleService === "undefined" ? Object : _roleserviceinterface.IRoleService,
typeof _userserviceinterface.IUserService === "undefined" ? Object : _userserviceinterface.IUserService
])
], FirstTimeSetupController);
//# sourceMappingURL=first-time-setup.controller.js.map