@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.
71 lines (70 loc) • 3.14 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, {
getPassportJwtOptions: function() {
return getPassportJwtOptions;
},
initializePassportStrategies: function() {
return initializePassportStrategies;
},
verifyUserCallback: function() {
return verifyUserCallback;
}
});
const _passportjwt = require("passport-jwt");
const _passportanonymous = require("passport-anonymous");
const _containertokens = require("../container.tokens");
const _serverconstants = require("../server.constants");
const _runtimeexceptions = require("../exceptions/runtime.exceptions");
const _authorizationconstants = require("../constants/authorization.constants");
function getPassportJwtOptions(settingsStore, configService, jwtFromRequest = _passportjwt.ExtractJwt.fromAuthHeaderAsBearerToken()) {
return {
jwtFromRequest: jwtFromRequest,
secretOrKeyProvider: async (_req, _token, done)=>{
const { jwtSecret } = await settingsStore.getCredentialSettings();
return done(null, jwtSecret);
},
audience: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_AUDIENCE, _serverconstants.AppConstants.DEFAULT_JWT_AUDIENCE),
issuer: configService.get(_serverconstants.AppConstants.OVERRIDE_JWT_ISSUER, _serverconstants.AppConstants.DEFAULT_JWT_ISSUER)
};
}
function verifyUserCallback(userService) {
return function(jwt_payload, done) {
userService.getUser(jwt_payload.userId).then((user)=>{
if (user && user.isVerified && !user.needsPasswordChange) {
return done(null, user);
}
if (user?.needsPasswordChange) {
return done(new _runtimeexceptions.AuthenticationError("Password change required", _authorizationconstants.AUTH_ERROR_REASON.PasswordChangeRequired), false);
}
if (!user?.isVerified) {
return done(new _runtimeexceptions.AuthenticationError("User not verified", _authorizationconstants.AUTH_ERROR_REASON.AccountNotVerified), false);
}
return done(null, false);
}).catch((err)=>{
if (err) {
return done(err, false);
}
});
};
}
function initializePassportStrategies(passport, container) {
const settingsStore = container.resolve(_containertokens.DITokens.settingsStore);
const configService = container.resolve(_containertokens.DITokens.configService);
const userService = container.resolve(_containertokens.DITokens.userService);
const opts = getPassportJwtOptions(settingsStore, configService, _passportjwt.ExtractJwt.fromAuthHeaderAsBearerToken());
passport.use(new _passportjwt.Strategy(opts, function(jwt_payload, done) {
verifyUserCallback(userService)(jwt_payload, done);
}));
passport.use(new _passportanonymous.Strategy());
return passport;
}
//# sourceMappingURL=passport.js.map