2012-11-20 3 views
0

J'utilise la stratégie Facebook d'ExpressJS et PassportJS pour essayer d'effectuer des redirections conditionnelles sur le rappel d'authentification qui doit être appelé lorsque certaines propriétés sont manquantes.Redirection d'URL conditionnelle PassportJS et ExpressJS

Mon utilisateur Schéma:

var UserSchema = new Schema({ 
    id: ObjectId, 
    uid: String, 
    facebookToken: String, 
    username: String, 
    password: String, 
    salt: String, 
    firstName: String, 
    lastName: String, 
    email: String, 
    birthday: Date, 
    gender: String, 
    location: String, 
    phone: Number, 
    verifiedPhone: Boolean, 
    interests: { 
    culture: Boolean, 
    food: Boolean, 
    business: Boolean, 
    family: Boolean, 
    learning: Boolean, 
    sports: Boolean, 
    movies: Boolean, 
    music: Boolean, 
    events: Boolean, 
    nightlife: Boolean, 
    health: Boolean, 
    beauty: Boolean, 
    fashion: Boolean, 
    motoring: Boolean, 
    electronics: Boolean, 
    groceries: Boolean, 
    travel: Boolean, 
    decor: Boolean 
    }, 
    weeklyNotifcation: Number, 
    weeklyNotificationSent: Number, 
    created: {type: Date, default: Date.now} 
}); 

Mon Callback:

app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), function(req, res) { 
    User.findOne({uid: req.session.uid}, function(err, user) { 
    if(user.email || user.location || user.phone || user.location == undefined) { 
     res.redirect('/register'); 
    } else { 
     res.redirect('/'); 
    } 
    }); 
}); 

Les données sont stockées dans mongo après /auth/facebook est appelé. Je vérifie la base de données contre l'utilisation de la session et vérifie si elle n'est pas définie car elle ne retournera pas les champs puisqu'ils n'ont pas été stockés dans la base de données. Le rappel échoue et ne renvoie aucune donnée reçue.

Toute aide sera appréciée.

+0

avez-vous réussi à résoudre ce problème? J'ai le même problème –

Répondre

1
if(user.email === undefined || user.location === undefined || user.phone === undefined || user.location === undefined) { 

est probablement ce que vous vouliez dire. En outre, vous devriez probablement vérifier la variable err pour voir s'il y a des erreurs.

Questions connexes