Implement auth with jwt and add endpoints

This commit is contained in:
2020-05-08 13:12:10 +02:00
parent fce5a162d3
commit 4b5a5b2477
8 changed files with 218 additions and 3 deletions

36
helpers/authJwt.js Normal file
View File

@@ -0,0 +1,36 @@
const jwt = require('jsonwebtoken');
const { jwt_secret } = require('../config/config');
module.exports = {
authenticate,
generateToken,
};
function generateToken(user) {
const payload = {
username: user.username,
email: user.email
};
const options = {
expiresIn: '30d',
};
return jwt.sign(payload, jwt_secret, options);
}
function authenticate(req, res, next) {
const token = req.get('Authorization');
if (token) {
jwt.verify(token, jwt_secret, (err, decoded) => {
if (err) return res.status(401).json(err);
req.decoded = decoded;
next();
});
} else {
return res.status(401).json({
error: 'No token provided, must be set on the Authorization Header',
});
}
}