From d8f7962a458b4a30ae8ea5c4234aa43781f42105 Mon Sep 17 00:00:00 2001 From: Eduardo Mathias <ems19@inf.ufpr.br> Date: Mon, 15 May 2023 11:57:36 -0300 Subject: [PATCH] [ADD] ResetToken Postgres methods --- src/libs/api_mongo.txt | 5 +- src/libs/middlewares/passport.js | 6 +- src/libs/models/resetToken.js | 2 +- src/libs/routes_v1/resetToken.js | 114 +++++++++++++++--------------- src/libs/routes_v1/user.js | 8 +-- src/libs/routes_v1/verifyToken.js | 2 +- 6 files changed, 69 insertions(+), 68 deletions(-) diff --git a/src/libs/api_mongo.txt b/src/libs/api_mongo.txt index d43ea00a..58f65965 100644 --- a/src/libs/api_mongo.txt +++ b/src/libs/api_mongo.txt @@ -1,5 +1,6 @@ *downloads.js -*resetToken.js +*resetToken.js (V) +*pqr.js *simulation.js *user.js (V) -*verifyToken.js +*verifyToken.js (V) diff --git a/src/libs/middlewares/passport.js b/src/libs/middlewares/passport.js index 82f21de5..a63cd150 100644 --- a/src/libs/middlewares/passport.js +++ b/src/libs/middlewares/passport.js @@ -38,10 +38,10 @@ passport.use(new BearerStrategy(async (accessToken, done) => { } if (Math.round((Date.now() - token.created) / 1000) > config.security.tokenLife) { - AccessToken.destroy({ token: accessToken }).then((err) => { + AccessToken.destroy({where:{ token: accessToken} }).catch(function (err) { if (err) { - console.log("ERRO remove Token") - return done(err); + log.error(err); + return next({ err }); } }); diff --git a/src/libs/models/resetToken.js b/src/libs/models/resetToken.js index 5398e9f4..21e5915e 100644 --- a/src/libs/models/resetToken.js +++ b/src/libs/models/resetToken.js @@ -27,7 +27,7 @@ var ResetToken = db.define("ResetToken",{ {timestamps: false} ); -ResetToken.hasExpired = function () { +ResetToken.prototype.hasExpired = function () { var now = new Date(); return (now - this.createdAt) > 86400; //Expire if token is 1 day old }; diff --git a/src/libs/routes_v1/resetToken.js b/src/libs/routes_v1/resetToken.js index 3d67a1e2..7c758410 100644 --- a/src/libs/routes_v1/resetToken.js +++ b/src/libs/routes_v1/resetToken.js @@ -10,72 +10,72 @@ const ResetToken = require(`${libs}/models/resetToken`); const User = require(`${libs}/models/user`); -resetTokenApp.get('/:token', (req, res, next) => { +resetTokenApp.get('/:token', async (req, res, next) => { let token = req.params.token; - ResetToken.findOne({token: token}, (err, rToken) => { - if(err) { + let rToken = await ResetToken.findOne({where:{ token: token} }).catch(function (err) { + if (err) { log.error(err); - return next(err); + return next({ err }); } - if(!rToken) { - // TODO: generate new reset token - res.statusCode = 404; - return next({msg: 'Token not found', status:404}); - } - if (rToken.hasExpired()) { - res.statusCode = 410; - ResetToken.remove({token: token}, (err) => { - if(err) { - log.error(err); - next(err); - } - }) - return next({msg: 'Token expired', status: 410}); - } - User.findByPk(rToken.userId, (err, user) => { - if(err) { + }) + if (!rToken) { + res.statusCode = 404; + return next({ msg: 'Token not found', status: 404 }); + } + if (rToken.hasExpired()) { + res.statusCode = 410; + await ResetToken.remove({where:{ token: token}}).catch(function (err) { + if (err) { log.error(err); - next(err); + return next({ err }); } - let u = user.toObject(); - delete u.salt; - delete u.hashedPassword; - res.json({user: u}); - }); - }); + }) + return next({ msg: 'Token expired', status: 410 }); + } + let _user = await User.findByPk(rToken.user_id).catch(function (err) { + if (err) { + log.error(err); + return next({ err }); + } + }) + let u = _user.toJSON(); + delete u.salt; + delete u.hashed_password; + res.json({ user: u }); }); -resetTokenApp.post('/:token', (req, res, next) => { + +resetTokenApp.post('/:token', async (req, res, next) => { let token = req.params.token; - ResetToken.findOne({token: token}, (err, rToken) => { - if(err) { + let rToken = await ResetToken.findOne({where:{ token: token}}).catch(function (err) { + if (err) { log.error(err); - return next(err); + return next({ err }); } - if(!rToken) { - res.statusCode = 404; - return next({msg: 'Token not found', status:404}); + }) + if (!rToken) { + res.statusCode = 404; + return next({ msg: 'Token not found', status: 404 }); + } + let _user = await User.findByPk(rToken.user_id).catch(function (err) { + if (err) { + log.error(err); + return next({ err }); } - User.findByPk(rToken.userId, (err, user) => { - if(err) { - log.error(err); - next(err); - } - user.password = req.body.password; - user.save((err) => { - if(err) { - log.error(err); - next(err); - } - ResetToken.remove({token: token}, (err) => { - if(err) { - log.error(err); - next(err); - } - }) - res.json({msg: "Senha alterada com sucesso"}); - }) - }); - }); -}) + }) + await _user.update({password:req.body.password}); + _user.save().catch(function (err) { + if (err) { + log.error(err); + return next({ err }); + } + }) + await ResetToken.destroy({where:{token: token} }).catch(function (err) { + if (err) { + log.error(err); + return next({ err }); + } + }) + res.json({ msg: "Senha alterada com sucesso" }); +}); module.exports = resetTokenApp; diff --git a/src/libs/routes_v1/user.js b/src/libs/routes_v1/user.js index 53f3ef54..d02edd84 100644 --- a/src/libs/routes_v1/user.js +++ b/src/libs/routes_v1/user.js @@ -94,7 +94,7 @@ userApp.get('/', passport.authenticate('bearer', {session: false}), (req, res, n */ userApp.get('/me', passport.authenticate('bearer', { session: false }), (req, res, next) => { - let u = req.user; + let u = req.user.toJSON(); delete u.hashed_password; delete u.salt; req.result = u; @@ -107,7 +107,7 @@ userApp.get('/:id', (req, res, next) => { res.statusCode = 404; res.json({ msg: "O usuário não está cadastrado" }); } else { - let u = user; + let u = user.toJSON(); delete u.hashed_password; delete u.salt; req.result = u; @@ -256,8 +256,8 @@ userApp.put('/:id', passport.authenticate('bearer', { session: false }), async ( log.error(err); return next({ message: 'Erro ao atualizar usuário' }); }}) - let u = user; - delete u.hashedPassword; + let u = user.toJSON(); + delete u.hashed_password; delete u.salt; delete u.password; res.json({ user: u }); diff --git a/src/libs/routes_v1/verifyToken.js b/src/libs/routes_v1/verifyToken.js index d1c75b5f..81731fe3 100644 --- a/src/libs/routes_v1/verifyToken.js +++ b/src/libs/routes_v1/verifyToken.js @@ -45,7 +45,7 @@ verifyTokenApp.get('/:token', async (req, res, next) => { next(err); } }); - let u = _user; + let u = _user.toJSON(); delete u['salt']; delete u['hashed_password']; res.json({ msg: 'User verified', u }); -- GitLab