Я занимаюсь разработкой портала по найму в Node.js. При регистрации пользователь должен сообщить, что он / она является HR, и он был сохранен в базе данных. В моей пользовательской схеме есть свойство с именем isHr, котороеЗначение true, если пользователь является HR, и false, если это обычный пользователь (ищущий работу). Теперь, когда я вхожу в систему с использованием passport-local, после аутентификации пользователя я хочу перенаправить пользователя, который не является HR, на другую страницу и пользователя, который является HR, на другую страницу.
Здесьмой пост / маршрут входа:
router.post("/login", function(req, res, next) {
User.find({ email: req.body.email }, function(err, user) {
if (err) {
req.flash('error_msg', 'No user found for this email');
res.redirect('/users/login');
} else if (user.isHr === true) {
passport.authenticate('local', {
successRedirect: '/hr/postjob',
failureRedirect: '/users/login',
failureFlash: true
})(req, res, next);
} else {
console.log(user);
passport.authenticate('local', {
successRedirect: '/users',
failureRedirect: '/users/login',
failureFlash: true
})(req, res, next);
}
})
})
Я не могу знать, где я должен проверить это условие? Потому что это не работает и перенаправляет каждый раз на / users url.
Мой passport.js имеет следующее:
module.exports = function(passport) {
passport.use(new LocalStrategy({ usernameField: 'email' }, (email,
password, done) => {
//Match user
User.findOne({
email: email
}).then(user => {
if (!user) {
return done(null, false, { message: 'No user found' })
console.log('No user found')
}
//Match the password
bcrypt.compare(password, user.password, (err, isMatch) => {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: 'Uh oh !
incorrect password' });
}
})
})
}));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
}
Мой пользователь такой, когда я делаюconsole.log (пользователь) в моем посте / логин маршрута
[ { _id: 5db26c62ab402f32ed345572,
name: 'Hr ashutosh',
email: 'hrashutosh@gmail.com',
password:
'$2a$10$2utKP/FKTpYLOGwc.g/FAeN44IJ4/e8L.IqMhB9KqKAHeePdBLGXy',
isHr: true,
__v: 0 } ]
Простите меня за любые грамматические ошибки.