Thursday, 27 April 2017

Error on terminal "Not a valid BCrypt hash."

I have make component signup[username, password] and login[username, password] page using reactjs with database USERS[username, password].

So when user signup credentials(username, password) saved in database. Then user login with same credentials then authenticate user in database

But getting error.Not a valid BCrypt hash.

var LocalStrategy   = require('passport-local').Strategy;
var mysql = require('mysql');
var bcrypt = require('bcrypt-nodejs');
var dbconfig = require('./database');
var connection = mysql.createConnection(dbconfig.connection);

connection.query('USE ' + dbconfig.database);

module.exports = function(passport) {
passport.serializeUser(function(user, done) {
    done(null, user.id);
});
passport.deserializeUser(function(id, done) {
    connection.query("SELECT * FROM users WHERE id = ? ",[id], 
function(err, rows){
        done(err, rows[0]);
    });
});

passport.use(
    'Process-for-signup',
    new LocalStrategy({
        usernameField : 'username',
        passwordField : 'password',
        passReqToCallback : true 
    },
    function(req, username, password, done) {
        connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows) {
        if (err)
            return done(err);
        if (rows.length) {
            return done(null, false, req.flash('signupMessage', 'That username is already taken.'));
        } else {
            var newUserMysql = {
                username: username,
                password: bcrypt.hashSync(password, null, null) 
                // password: password,
            };
            var insertQuery = "INSERT INTO users (username, password ) values (?,?)";
            connection.query(insertQuery,[newUserMysql.username, newUserMysql.password],function(err, rows) {
                newUserMysql.id = rows.insertId;
                return done(null, newUserMysql);
            });
        }
        });
    })
);
passport.use(
    'Process-for-login',
    new LocalStrategy({
        usernameField : 'username',
        passwordField : 'password',
        passReqToCallback : true 
    },
    function(req, username, password, done) { 
        connection.query("SELECT * FROM users WHERE username = ?",[username], function(err, rows){
            if (err)
                return done(err);
            if (!rows.length) {
                return done(null, false, req.flash('loginMessage', 'No user found.')); 
            }

            if (!bcrypt.compareSync(password, rows[0].password))
                return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); 

            return done(null, rows[0]);
        });
    })
);

};



via GeekDeveloper

No comments:

Post a Comment