46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
const jwt = require('jsonwebtoken'),
|
|
secret = require('../config/env.config.js').jwt_secret,
|
|
crypto = require('crypto');
|
|
|
|
exports.verifyRefreshBodyField = (req, res, next) => {
|
|
if (req.body && req.body.refresh_token) {
|
|
return next();
|
|
} else {
|
|
return res.status(400).send({error: 'need to pass refresh_token field'});
|
|
}
|
|
};
|
|
|
|
exports.validRefreshNeeded = (req, res, next) => {
|
|
let b = new Buffer(req.body.refresh_token, 'base64');
|
|
let refresh_token = b.toString();
|
|
let hash = crypto.createHmac('sha512', req.jwt.refreshKey).update(req.jwt.userId + secret).digest("base64");
|
|
if (hash === refresh_token) {
|
|
req.body = req.jwt;
|
|
return next();
|
|
} else {
|
|
return res.status(400).send({error: 'Invalid refresh token'});
|
|
}
|
|
};
|
|
|
|
|
|
exports.validJWTNeeded = (req, res, next) => {
|
|
|
|
if (req.headers['authorization']) {
|
|
try {
|
|
let authorization = req.headers['authorization'].split(' ');
|
|
if (authorization[0] !== 'Bearer') {
|
|
return res.status(401).send();
|
|
} else {
|
|
req.jwt = jwt.verify(authorization[1], secret);
|
|
|
|
return next();
|
|
}
|
|
|
|
} catch (err) {
|
|
console.log(err)
|
|
return res.status(403).send();
|
|
}
|
|
} else {
|
|
return res.status(401).send();
|
|
}
|
|
}; |