Acceso JWT implementado
This commit is contained in:
parent
92e4ccbb3c
commit
755c5c6fa8
@ -9,7 +9,7 @@ module.exports = {
|
|||||||
|
|
||||||
session: {
|
session: {
|
||||||
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
|
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: {
|
server: {
|
||||||
|
|||||||
@ -9,7 +9,7 @@ module.exports = {
|
|||||||
|
|
||||||
session: {
|
session: {
|
||||||
secret_token: process.env.SECRET_TOKEN || "B57J=7B`NQ$y98|~5;hc715bo09^5oz8NR+]n9r~215B91Nd9P%25_N6r!GHcOKp|18y5-73Dr5^@9k7n]5l<-41D1o",
|
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: {
|
server: {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const passport = require('passport');
|
const passport = require('passport');
|
||||||
const { Strategy: LocalStrategy } = require('passport-local');
|
const { Strategy: LocalStrategy } = require('passport-local');
|
||||||
const { Strategy: JWTStrategy} = require('passport-jwt');
|
const { Strategy: CustomStrategy } = require('passport-custom');
|
||||||
|
|
||||||
const models = require('./models');
|
const models = require('./models');
|
||||||
const securityHelper = require('../helpers/security.helper');
|
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)) {
|
// JWT
|
||||||
return done(null, false, { message: 'User not found' })
|
passport.use('jwt', new CustomStrategy(async (req, done) => {
|
||||||
} else {
|
const token = ((req && req.headers && req.headers['x-access-token']) ? req.headers['x-access-token'] : null);
|
||||||
return done(null, user, { message: 'User found' });
|
console.log(token);
|
||||||
}
|
if (!token) {
|
||||||
} catch (error) {
|
return done(null, false, { message: 'Unauthorized'});
|
||||||
return done(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return done(null, securityHelper.verify(token));
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@ const config = require('../config');
|
|||||||
const privateKEY = fs.readFileSync(path.join(__dirname, '..', 'private.key'), 'utf8');
|
const privateKEY = fs.readFileSync(path.join(__dirname, '..', 'private.key'), 'utf8');
|
||||||
const publicKEY = fs.readFileSync(path.join(__dirname, '..', 'public.key'), 'utf8');
|
const publicKEY = fs.readFileSync(path.join(__dirname, '..', 'public.key'), 'utf8');
|
||||||
|
|
||||||
|
|
||||||
const signOptions = {
|
const signOptions = {
|
||||||
issuer: 'Fundación LQDVI',
|
issuer: 'Fundación LQDVI',
|
||||||
subject: 'info@loquedeverdadimporta.org',
|
subject: 'info@loquedeverdadimporta.org',
|
||||||
@ -92,7 +91,7 @@ const _decode = (token) => {
|
|||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
jwtOptions: {
|
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,
|
secretOrKey: publicKEY,
|
||||||
...signOptions,
|
...signOptions,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -35,6 +35,7 @@ routes.get('/test_jwt', AccessValidator.isLoggedUser,
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
routes.post('/token',
|
routes.post('/token',
|
||||||
authController.regenerateToken,
|
authController.regenerateToken,
|
||||||
);
|
);
|
||||||
@ -43,5 +44,10 @@ routes.post('/token/reject',
|
|||||||
authController.rejectToken,
|
authController.rejectToken,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
routes.post('/prueba', AccessValidator.isLoggedUser,
|
||||||
|
function (req, res) {
|
||||||
|
res.json({ success: 'You are authenticated with JWT!', user: req.user })
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
module.exports = routes;
|
module.exports = routes;
|
||||||
@ -44,7 +44,7 @@
|
|||||||
"node-fetch": "^2.3.0",
|
"node-fetch": "^2.3.0",
|
||||||
"os": "^0.1.1",
|
"os": "^0.1.1",
|
||||||
"passport": "^0.4.0",
|
"passport": "^0.4.0",
|
||||||
"passport-jwt": "^4.0.0",
|
"passport-custom": "^1.0.5",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
"pino": "^4.7.1",
|
"pino": "^4.7.1",
|
||||||
|
|||||||
@ -49,7 +49,7 @@ server.on('error', err => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
models.sequelize.sync({ force: false }).then(() => {
|
models.sequelize.sync({ force: true }).then(() => {
|
||||||
// Launch server.
|
// Launch server.
|
||||||
server.listen(currentState.port, (err) => {
|
server.listen(currentState.port, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user