Acceso JWT implementado

This commit is contained in:
David Arranz 2019-07-09 14:52:22 +02:00
parent 92e4ccbb3c
commit 755c5c6fa8
7 changed files with 20 additions and 22 deletions

View File

@ -9,7 +9,7 @@ module.exports = {
session: {
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
token_expires_in: '300'
token_expires_in: '12h'
},
server: {

View File

@ -9,7 +9,7 @@ module.exports = {
session: {
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
token_expires_in: '300'
token_expires_in: '12h'
},
server: {

View File

@ -1,7 +1,7 @@
const _ = require('lodash');
const passport = require('passport');
const { Strategy: LocalStrategy } = require('passport-local');
const { Strategy: JWTStrategy} = require('passport-jwt');
const { Strategy: CustomStrategy } = require('passport-custom');
const models = require('./models');
const securityHelper = require('../helpers/security.helper');
@ -104,22 +104,15 @@ console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><');
}
}));
// JWT
passport.use('jwt', new JWTStrategy(securityHelper.jwtOptions, async (jwtPayload, done) => {
try {
const user = await models.User.findOne({
attributes: { exclude: [ 'password' ] },
where: { id: jwtPayload.id },
raw: true
});
if (_.isNull(user)) {
return done(null, false, { message: 'User not found' })
} else {
return done(null, user, { message: 'User found' });
}
} catch (error) {
return done(error);
// JWT
passport.use('jwt', new CustomStrategy(async (req, done) => {
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
console.log(token);
if (!token) {
return done(null, false, { message: 'Unauthorized'});
}
return done(null, securityHelper.verify(token));
}));

View File

@ -8,7 +8,6 @@ const config = require('../config');
const privateKEY = fs.readFileSync(path.join(__dirname, '..', 'private.key'), 'utf8');
const publicKEY = fs.readFileSync(path.join(__dirname, '..', 'public.key'), 'utf8');
const signOptions = {
issuer: 'Fundación LQDVI',
subject: 'info@loquedeverdadimporta.org',
@ -92,7 +91,7 @@ const _decode = (token) => {
module.exports = {
jwtOptions: {
jwtFromRequest: (req) => ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null),
jwtFromRequest: (req) => { console.log(req.headers); return ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null) },
secretOrKey: publicKEY,
...signOptions,
},

View File

@ -35,6 +35,7 @@ routes.get('/test_jwt', AccessValidator.isLoggedUser,
}
);
routes.post('/token',
authController.regenerateToken,
);
@ -43,5 +44,10 @@ routes.post('/token/reject',
authController.rejectToken,
);
routes.post('/prueba', AccessValidator.isLoggedUser,
function (req, res) {
res.json({ success: 'You are authenticated with JWT!', user: req.user })
}
);
module.exports = routes;

View File

@ -44,7 +44,7 @@
"node-fetch": "^2.3.0",
"os": "^0.1.1",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"passport-custom": "^1.0.5",
"passport-local": "^1.0.0",
"path": "^0.12.7",
"pino": "^4.7.1",

View File

@ -49,7 +49,7 @@ server.on('error', err => {
});
try {
models.sequelize.sync({ force: false }).then(() => {
models.sequelize.sync({ force: true }).then(() => {
// Launch server.
server.listen(currentState.port, (err) => {
if (err) {