-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathvalidarJWT.js
30 lines (30 loc) · 930 Bytes
/
validarJWT.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
var model = require('./ModelUsuario')
, jwt = require('jwt-simple');
var segredo = 'seusegredodetoken';
module.exports = function(req, res, next) {
var token = (req.body && req.body.access_token) || (req.query && req.query.access_token) || req.headers['x-access-token'];
//1
if (token) {
try {
var decoded = jwt.decode(token, segredo);
console.log('decodando ' + decoded);
//2
if (decoded.exp <= Date.now()) {
res.json(400, {error: 'Acesso Expirado, faça login novamente'});
}
//3
model.findOne({ _id: decoded.iss }, function(err, user) {
if(err)
res.status(500).json({message: "erro ao procurar usuario do token."})
req.user = user;
console.log('achei usuario ' + req.user)
return next();
});
//4
} catch (err) {
return res.status(401).json({message: 'Erro: Seu token é inválido'});
}
} else {
res.json(401, {message: 'Token não encontrado ou informado'})
}
};