Monday 10 April 2017

TypeError: bcrypt.checkPassword is not a function

I want to check password when users log in but there is an error message "TypeError: bcrypt.checkPassword is not a function".

Here are my code and I don't understand why bcrypt.checkPassword isn't a function.

[bcrypt.js]

var checkPassword = function(textEnteredInLoginForm, hashedPasswordFromDatabase) {
  return new Promise(function(resolve, reject) {
    bcrypt.compare(textEnteredInLoginForm, hashedPasswordFromDatabase, function(err, doesMatch){
        if (err) {
          reject(err);
        }
      console.log(doesMatch);
      resolve(doesMatch);
    });
  });
};


module.exports.checkPassword = checkPassword;

[db.js]

var bcrypt = require('bcrypt');


module.exports.login = function(email, password){
  var hashedPasswordFromDatabase;
  var query = `SELECT * FROM users WHERE email ='{$req.body.email}'`;
  db.query(query).then(function(data){
    return hashedPasswordFromDatabase = data[0].password;
    console.log("hashedPasswordFromDatabase : "+hashedPasswordFromDatabase);
  });

  return bcrypt.checkPassword(password).then(function(password, hashedPasswordFromDatabase){
    var query = 'SELECT * FROM users';
    return db.query(query).then(function(results){
      return results.rows;
    });
  });
};

[ router.js ]

var express = require('express');
var cookieSession = require('cookie-session');
var db = require('../configure/db');
var bcrypt = require('../public/js/bcrypt');
var router = express.Router();

router.route('/login')
.get(function(req,res) {
  res.render('login');  // url -> /login
})
.post(function(req,res){
  db.login(req.body.email, req.body.password)
  .then(function(data){
    res.redirect('/petition'); // login -> petition
  }).catch(function(error){
    console.log(error);
    res.render('error');
  });
});



via Hyunjung Lee

No comments:

Post a Comment