TransWikia.com

¿Cómo crear un método para modificar la contraseña en node.js?

Stack Overflow en español Asked by Osleynin Mambell Ramos on September 12, 2020

Necesito hacer un método para cambiar la contraseña en una aplicación. ya lo hice pero al momento de ingresar en la aplicación me dice que la contraseña es incorrecta. El problema me ocurre por la encryptación. Al momento de comparar la contraseña en la validacion me dice que no es correcta…

 var User         = require('../app/models/user');


app.post('/api/changepass', ComprobarClave, function (req, res) {

     try{

        User.findOne({ 'local.email' :  req.user.local.email }, function(err, user) {
            console.log(req.user.generateHash(req.body.password));
            console.log(req.user.generateHash(req.body.password_confirmation));
                 // Si hay errores, se retornan
                if (err){
                    return done(err);
                }else {
                        User.update({ 'local.email' :  req.user.local.email },{'$set':{'local.password':req.user.generateHash(req.body.clave)}},  function(err, user){
                            console.log(user);
                        });

                }

        });



} catch (e) {
        res.send('error');
    }
    return res.render('admin/userconfiguracion.ejs', {
            user: req.user
        });
});

// Funciones adicionales para asegurarse que el usuario haya iniciado sesion, este logeado


function ComprobarClave(req, res, next) {
var clave1 = req.body.password;
var clave2 = req.body.password_confirmation;

if (clave1 == clave2) {
    console.log(msg_str_pass_pass_igual);
    return next();
} else {
    console.log(msg_str_pass_pass_diferente);
    req.flash('signupMessage', msg_str_pass_pass_diferente);
    res.redirect('/signup');
}
};

los metodos de encryptar estan en el model/users

var bcrypt = require('bcrypt-nodejs'); // modulo de encriptacion basado en el cifrado de Blowfish
// genera el hash de encriptación para la clave
userSchema.methods.generateHash = function(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); // el SaltSync predeterminado es 10
};
// cheque si un password es valido

userSchema.methods.validPassword = function(password) {
return bcrypt.compareSync(password, this.local.password);

};

One Answer

Ya lo resolví, al parecer estaba usando mal el codigo, para modificar en mongoDB Aca anexo el codigo por si alguien lo necesita. El problema estaba en el else del post api/changepass

user.local.password =  user.generateHash(req.body.password);
user.save(function(err) {
if (err) {
return res.redirect('back');
} else {
res.render('admin/userconfiguracion.ejs', {user: req.user, mensaje: 'Su 
contraseña ha sido cambiada'} );
 } });

Answered by Osleynin Mambell Ramos on September 12, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP