У меня работает стратегия local-signup
Passport.js, когда пользователь отправляет форму регистрации, а затем при отправке запускается серия проверок, чтобы убедиться, что пользователь отправил адрес электронной почты, которого нет в базе данных.флаг условий обслуживания имеет значение true, а поля пароля совпадают.В тот момент, когда форма отправляется без заполненной формы, запускается failureRedirect
, но путь function(req, email, password, done) {
никогда не вызывается.Почему и как я могу исправить настройки моего паспорта?
маршрут:
siteRoutes.route('/sign-up')
.get(function(req, res){
res.render('pages/site/sign-up.hbs', {
error: req.flash('error'),
csrfToken: req.csrfToken()
});
})
.post(passport.authenticate('local-signup', {
successRedirect: '/app/setup/users',
failureRedirect: '/sign-up'
}));
*
* стратегия: **
passport.use('local-signup', new LocalStrategy({
passReqToCallback: true,
usernameField: 'email'
}, function(req, email, password, done) {
console.log("Signup check has begun")
console.log(e)
models.User.findOne({
where: {
email: email
}
}).then(function(existingUser) {
console.log("check existing user")
//If user already exists in system
if (existingUser){
return done(null, false, req.flash('error', 'Email already exists.'));
}
//If password does not match confirm password field
else if (req.body.tosAcceptance === undefined) {
console.log("TOS Not Checked")
done(null, false, req.flash('error', 'You must agree to our Terms of Service and Privacy Polcy. Please read and check the box if you agree.'));
} else if (password !== req.body.confirmPassword) {
console.log("Password does not match")
done(null, false, req.flash('error', 'Passwords do not match.'));
} else {
}
}).catch(function(e){
console.log(e)
})
Iникогда не видеть console.log("Signup check has begun")
, что указывает на то, что эта часть никогда не запускается при наличии ошибки.Однако, если все поля заполнены, то эта часть запускается.Не уверен, почему это так.