Question

I dont see whats the error here: it returns

Undefined
"Unknown user"

passport.use(new LocalStrategy(
  function(username, password, done) {
    process.nextTick(function () {

    findByUsername(username, function(err, user) {
    if (err) { 
      console.log(err);
      return done(err); 
    }
    if (!user) { 
      console.log("Unknown user");
      return done(null, false, { message: 'Unknown user ' + username }); 
    }
    if (user.password != password) { 
      console.log("Invalid password");
      return done(null, false, { message: 'Invalid password' }); 
    }
    return done(null, user);
  })
});
}));


function findByUsername(username, fn) {
  var user = [];
  connection.query('SELECT * FROM Users WHERE username = ?', [username], function(err, rows) {
    //console.dir(rows);
    if(err != null) {
        //res.end("Query error:" + err);
        console.log("Query error:" + err);
    } else {
      for (var i = 0; i < rows.length; i++) {
        var myRows = rows[i];
        user.push(myRows);
      };
    }
    });
  console.log(user);
  console.log(user.username);
  if (user.username) {
    return fn(null, user.username);
  } else {
    return fn(null, null);
  }
}
Was it helpful?

Solution

You are passing user.username in callback. Instead you should pass user object. Edit: You should invoke the callback only after the query is executed.

function findByUsername(username, fn) {
    var user = [];
    connection.query('SELECT * FROM Users WHERE username = ?', [username], function (err, rows) {
        //console.dir(rows);
        if (err != null) {
            //res.end("Query error:" + err);
            console.log("Query error:" + err);
        } else {
            for (var i = 0; i < rows.length; i++) {
                var myRows = rows[i];
                user.push(myRows);
            };
        }

        console.log(user);
        console.log(user.username);
        if (user.username) {
          return fn(null, user);
        } else {
          return fn(null, null);
        }
    });
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top