Mongoose-auth / Everauthでのログインをユーザーに拒否するにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/8337848

質問

node.js / expressjs / mongoose / mongoose-auth / everauthを使用します。すべてのバージョンは最新です。

開発中にメールアドレスでデータベーステーブルを使用してユーザーを使用しようとしていますが、Authの主要な方法を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;
    }

私がそこに何を置いたとしても、それは失敗し、サーバーにクラッシュするようです。私は明らかに何かが足りません。どんな助けも感謝します。

役に立ちましたか?

解決

私はこれをテストしていませんが、他のコードブロックが行っているのと同じように約束を返す必要があると確信しています

else {
    console.log('Denied');
    return promise.fail('Denied');
}

他のヒント

私はeverauthを使用していませんが、あなたは探していると思います validateRegistration 機能、ホワイトリストコードをそこに配置する場合:

.validateRegistration(function (newUser) {
    db.checkWhiteList(function (success) {
        return null; // everything OK
    },
    function (err) {
        return [ "Not on whitelist" ];
    }
});

これについては簡単な説明があります githubページ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top