Ваша стратегия Passport позволяет вам вернуться с пользователем или с ошибкой.
Например, эта стратегия Google выдаст ошибку, если ваша база данных еще не видела пользователя ранее (с использованием Mon goose).
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://www.example.com/auth/google/callback"
},
function(accessToken, refreshToken, profile, done) {
User.findOne({ googleId: profile.id }, function (err, user) {
if (!user) return done(Error("needs signup"), null)
return done(err, user)
});
}
));
В маршруте обратного вызова вы можете дать Паспорту failureRedirect
для отправки пользователя на страницу регистрации при возникновении ошибки.
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/signUpPage' }),
function(req, res) {
res.redirect('/');
});