Как перенаправить пользователя на другую страницу, если он администратор? - PullRequest
0 голосов
/ 25 октября 2019

Я занимаюсь разработкой портала по найму в 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 } ]

Простите меня за любые грамматические ошибки.

...