flowviz
Version:
A framework which provides seamless integration with other phylogenetic tools and frameworks, while allowing workflow scheduling and execution, through the Apache Airflow workflow system.
70 lines (63 loc) • 1.69 kB
JavaScript
const ApiException = require("../exceptions/apiException");
const UserModel = require("../models/mongodb/user/user");
const JwtStrategy = require("passport-jwt").Strategy;
const ExtractJwt = require("passport-jwt").ExtractJwt;
module.exports = (passport, secret) => {
const opts = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
secretOrKey: secret,
};
passport.use(
new JwtStrategy(opts, (jwt_payload, done) => {
UserModel.findOne({ username: jwt_payload.id }, (err, user) => {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
}
}).select("-_id username");
})
);
function register(user) {
const u = new UserModel(user);
return u.save().catch((err) => {
throw err;
});
}
function getUserByName(username) {
return UserModel.findOne({ username: username })
.then((dbUser) => {
if (!dbUser) {
throw ApiException.notFound(
`The user with name '${username}' does not exist.`
);
}
return dbUser;
})
.catch((err) => {
throw err;
});
}
function deleteUser(username) {
return UserModel.deleteOne({ username: username })
.then((dbUser) => {
if (!dbUser) {
throw ApiException.notFound(
`The user with name '${username}' does not exist.`
);
}
return dbUser;
})
.catch((err) => {
throw err;
});
}
return {
register: register,
getUserByName: getUserByName,
deleteUser: deleteUser,
};
};