sleep-tracker-backend/services/auth/authenticate.js

37 lines
686 B
JavaScript

require("dotenv").config();
const jwt = require('jsonwebtoken');
const jwtKey = process.env.JWT_SECRET;
module.exports = {
authenticate,
generateToken
};
function authenticate(req, res, next) {
const token = req.get('Authorization');
if (token) {
jwt.verify(token, jwtKey, (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',
});
}
}
function generateToken(user) {
const payload = {
username: user.username
};
const options = {
expiresIn: '3d'
};
return jwt.sign(payload, jwtKey, options);
}