UNPKG

node-express-mongodb-jwt-rest-api-skeleton

Version:

Node.js express.js MongoDB JWT REST API - This is a basic API REST skeleton written on JavaScript using async/await. Great for building a starter web API for your front-end (Android, iOS, Vue, react, angular, or anything that can consume an API)

48 lines (43 loc) 1.13 kB
const passport = require('passport') const User = require('../app/models/user') const auth = require('../app/middleware/auth') const JwtStrategy = require('passport-jwt').Strategy /** * Extracts token from: header, body or query * @param {Object} req - request object * @returns {string} token - decrypted token */ const jwtExtractor = (req) => { let token = null if (req.headers.authorization) { token = req.headers.authorization.replace('Bearer ', '').trim() } else if (req.body.token) { token = req.body.token.trim() } else if (req.query.token) { token = req.query.token.trim() } if (token) { // Decrypts token token = auth.decrypt(token) } return token } /** * Options object for jwt middlware */ const jwtOptions = { jwtFromRequest: jwtExtractor, secretOrKey: process.env.JWT_SECRET } /** * Login with JWT middleware */ const jwtLogin = new JwtStrategy(jwtOptions, (payload, done) => { User.findById(payload.data._id, (err, user) => { if (err) { return done(err, false) } return !user ? done(null, false) : done(null, user) }) }) passport.use(jwtLogin)