如果用户是管理员,如何将用户重定向到另一个页面?

时间:2019-10-25 04:11:55

标签: node.js passport.js passport-local

我正在Node.js中开发一个招聘门户,注册时,用户必须告诉他/她是HR,并且已将其保存在数据库中。在我的用户Schema中,有一个属性名称为isHr,如果用户是HR,则为true;如果是普通用户(求职者),则为false。 现在,当我使用本地护照进行登录时,在对用户进行身份验证之后,我想将不是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 网址。

我的password.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(user)时,我的用户就是这样

[ { _id: 5db26c62ab402f32ed345572,
name: 'Hr ashutosh',
email: 'hrashutosh@gmail.com',
password:
 '$2a$10$2utKP/FKTpYLOGwc.g/FAeN44IJ4/e8L.IqMhB9KqKAHeePdBLGXy',
isHr: true,
__v: 0 } ]

请原谅我在语法上的错误。

0 个答案:

没有答案