UNPKG

nodstarter

Version:
73 lines (67 loc) 2.12 kB
const expressJwt = require('express-jwt'); const config = require('../config'); const logger = require('../util/logger'); const jwt = require('jsonwebtoken'); const checkToken = expressJwt({ secret: config.secrets.jwt }); const User = require('../api/users/model'); exports.decodeToken = () => { return (req, res, next) => { if (req.query && req.query.hasOwnProperty('access_token')) { req.headers.authorization = 'Bearer ' + req.query.access_token; } checkToken(req, res, next); }; }; exports.getFreshUser = () => { return (req, res, next) => { User.findById(req.user._id) .then((user) => { if (!user) { res.status(400).send('Unanuthorized'); } else { req.user = user; next(); } }, (err) => { next(err); }); }; }; exports.verifyUser = () => { return (req, res, next) => { var username = req.body.username; var password = req.body.password; if (!username || !password) { res.status(400).send('You need a username and password'); return; } User.findOne({ username: username }) .then((user) => { logger.log('the selected user from DB: ' + user); if (!user) { logger.log('No user with the given username'); res.status(401).send('Invalid username or password'); } else if (!user.authenticate(password)) { logger.log('Invalid password'); res.status(401).send('Invalid username or password'); } else { req.user = user; next(); } }, (err) => { next(err); }); }; }; exports.signToken = (id) => { logger.log("id is: " + id); return jwt.sign({ _id: id }, config.secrets.jwt, { expiresIn: config.expireTime }); };