node.js / expressjs / mongoose / mongoose-auth / everyauth を使用します。すべてのバージョンが最新です。
データベース テーブルを使用して、開発中に電子メール アドレスでユーザーをホワイトリストに登録しようとしていますが、認証の主な方法を facebook にしたいと考えています。Facebookの電子メールがalpha_whitelistにある場合にのみ、mongoose-authにアカウントを作成させたいと思っています。これにより、テーブルにあるアドレスに対して期待どおりにアカウントが作成されますが、ユーザーがホワイトリストにない場合はタイムアウトになり、サーバーがクラッシュします。
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;
}
そこに何を入れても失敗してサーバーがクラッシュするようです。私は明らかに何かが欠けています。どんな助けでも大歓迎です。