Question

Utilisation Node.js / express.js / mangouste / mangouste-auth / everyauth. Toutes les versions sont à jour.

Je suis en train d'utiliser une table de base de données pour les utilisateurs par liste blanche adresse e-mail au cours du développement, mais je veux la principale méthode de auth être facebook. Je suis à la recherche d'avoir mangouste-auth seulement créer le compte si l'e-mail Facebook se trouve dans alpha_whitelist. Cela crée des comptes comme prévu pour les adresses qui sont dans le tableau, mais il se bloque et fois sur le serveur si l'utilisateur n'est pas dans la liste blanche.

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;
    }

Il semble que peu importe ce que je mets là, il échoue et bloque le serveur. Je manque clairement quelque chose. Toute aide serait appréciée.

Était-ce utile?

La solution

Je n'ai pas testé, mais je suis sûr que vous juste besoin de retourner la promesse comme les autres blocs de code font

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

Autres conseils

Je n'ai pas utilisé everyauth, mais je suppose que vous êtes à la recherche de la fonction validateRegistration, si vous mettez votre code whitelist là comme:

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

Il y a une brève description sur ce sujet à la GitHub .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top