Мне нужно, когда пользователь входит на сайт, я проверяю информацию, по которой пользователь может получить доступ к этому маршруту или нет.
Я пишу промежуточное ПО для проверки, используется ли администратор или нет:
const middleware = require ('./ Middlware');
class AuthAdmin extends middleware {
Handler(req, res, next) {
console.log('in auth',req.session.user)
// console.log(req.isAuthenticated(),req.user.isAdmin)
if (req.isAuthenticated() && req.user.isAdmin) {
next();
}
return res.redirect('/auth/login');
}
}
module.exports = new AuthAdmin();
это локальный логин - Паспорт:
passport.serializeUser(function (user, done) {
done(null, user.id);
});
passport.deserializeUser(function (id, done) {
UserModel.findById(id, function (err, user) {
done(err, user);
});
});
passport.use('local.login', new localStrategy({
usernameField: 'phoneNumber',
passwordField: 'password',
passReqToCallback: true
}, (req, phoneNumber, password, done) => {
UserModel.findOne({ 'phoneNumber': phoneNumber }, (err, user) => {
if (err) return done(err)
if (!user || !user.ValidationPassword(password)) {
return done(null, false, req.flash('errors', 'کاربری با این مشخصاتا در سیستم ثبت نشده است'));
}
return done(null, user);
})
}))
и использование в контроллере входа:
class LoginController extends BaseController {
Index(req, res) {
res.render('auth/login');
}
async LoginProcess(req, res, next) {
var result = await this.formValidation(req, res);
if (result) {
return await this.Login(req, res, next)
}
return res.redirect('/auth/login');
}
async Login(req, res, next) {
passport.authenticate('local.login', (err, user) => {
if (!user) return res.redirect('/auth/login')
req.logIn(user,function(err) {
if (err) console.log(err)
if (req.body.rememberMe) {
user.SetRememberToken(res)
}
return res.redirect('/admin/dashbaord');
})
})(req, res, next)
}
}
module.exports = new LoginController();
Я использую это промежуточное ПО в этом маршруте:
router.use('/admin', adminAuthntication.Handler, adminRouter);
, но каждый раз это не сработало поскольку в промежуточном программном обеспечении req.user
равно undefined
.
в чем проблема? как я могу решить эту проблему и сохранить информацию о пользователе в req.user
????