Solo necesitas modificar .authenticate
método. Dado que conectarse a la base de datos es (o debería ser) una operación asíncrona, debe agregar promise
objeto (ver documentación de everyauth
).
Suponiendo que tiene algún ORM con datos de usuario correspondientes a user
objeto con username
y password
atributos (en mi ejemplo usaré el motor mongoose), así es como puede verse:
.authenticate( function (login, password) {
var promise = this.Promise(); /* setup promise object */
/* asynchrnously connect to DB and retrieve the data for authentication */
db.find({ username:login }, function(err, user) {
if (err)
return promise.fulfill([err]);
if ((!user) || (user.password != password))
return promise.fulfill(['Incorrect username or password!']);
promise.fulfill(user);
});
return promise; /* return promise object */
})
No lo probé, pero según la documentación debería funcionar. Recuerde que se supone que los errores se mantienen en una matriz.
Por cierto:si está usando solo el método de contraseña, entonces no hay necesidad de usar un cañón contra una mosca. :) Escribir su propio mecanismo de autenticación (no necesariamente perfecto, pero funcional) es realmente simple y si no sabe cómo hacerlo, debe aprenderlo. Se beneficiará en el futuro, porque la autenticación y la seguridad en general son muy importantes en todas las aplicaciones web.