2017-01-05 10 views
2

В моем app.js у меня есть:passport.authenticate successRedirect состояние

router.post('/login', passport.authenticate('local', { 
    successRedirect: '/admin/users', 
    failureRedirect: '/login' 
}), function (req, res) { 
}); 

Мой пользовательский объект выглядит следующим образом:

{ _id: 586afad4a4ff884d28b6ca97, 
    firstName: 'Joseph', 
    ... 
    isAdmin: false } 

То, что я хочу сделать, это:

router.post('/login', passport.authenticate('local', { 
    successRedirect: { 
    if(req.body.user.isAdmin === true) { 
     res.redirect('/admin/users') 
    } 
    res.redirect('/dashboard'); 
    }, 
    failureRedirect: '/login' 
}), function (req, res) { 
}); 

, но, похоже, я не могу. Какой будет самый простой пример проверки того, является ли пользователь администратором или выполняет вход в систему, используя паспорт.authenticate

ответ

3

Мне удалось выяснить это. Факультативный объект в паспорт. Authenticate смутил меня. Так что я сделал:

router.post(
    '/login', 
    passport.authenticate('local', { 
    failureRedirect: '/login' 
    }), (req, res) => { 
    if (req.user.isAdmin === true) { 
     res.redirect('/admin/gifts?filter=review'); 
    } 
    if (req.user.isAdmin === false) { 
     res.redirect('/dashboard/received'); 
    } 
    });