Come posso negare a un utente di registrazione con mangusta-auth / everyauth
Domanda
Utilizzando node.js / expressjs / mangusta / mangusta-auth / everyauth. Tutte le versioni sono aggiornati.
Sto cercando di utilizzare una tabella di database per gli utenti della white list indirizzo e-mail durante lo sviluppo, ma voglio che il principale metodo di autenticazione per essere facebook. Sto cercando di avere mangusta-auth solo creare l'account se l'email di Facebook si trova in alpha_whitelist. Questo crea i conti come previsto per gli indirizzi che si trovano nella tabella, ma il tempo è scaduto e si blocca il server se l'utente non è nella lista bianca.
findOrCreateUser: function (sess, accessTok, accessTokExtra, fbUser) {
var promise = this.Promise(),
User = this.User()();
// TODO Check user in session or request helper first
// e.g., req.user or sess.auth.userId
User.findOne({'fb.id': fbUser.id}, function (err, foundUser) {
if(foundUser)
return promise.fulfill(foundUser);
alpha_whitelist.findOne(
{email: fbUser.email},
function(err,doc) {
if(doc) {
console.log("CREATING");
User.createWithFB(fbUser, accessTok, accessTokExtra.expires, function (err, createdUser) {
console.log(err,createdUser);
if (err) return promise.fail(err);
return promise.fulfill(createdUser);
});
} else {
console.log('Denied');
//not sure what to do here... i need to break the auth chain and redirect the user back to '/'
}
});
});
return promise;
}
Sembra che non importa quello che ho messo lì, non riesce e si blocca il server. Sto chiaramente manca qualcosa. Qualsiasi aiuto sarebbe apprezzato.
Soluzione
Non ho testato questo, ma sono sicuro che solo bisogno di restituire la Promessa come gli altri blocchi di codice stanno facendo
else {
console.log('Denied');
return promise.fail('Denied');
}
Altri suggerimenti
Non ho usato everyauth, ma credo che si sta cercando per la funzione validateRegistration
, se si mette il codice whitelist lì come:
.validateRegistration(function (newUser) {
db.checkWhiteList(function (success) {
return null; // everything OK
},
function (err) {
return [ "Not on whitelist" ];
}
});
C'è una breve descrizione su questo al GitHub pagina .