Как я могу сделать другой поток присяги между входом в систему и подпиской на социальные сети? как гугл oauth2.0 с использованием паспорта js - PullRequest
1 голос
/ 01 февраля 2020

Я хочу, чтобы Auth0 различал guish между социальной регистрацией и социальной регистрацией. Если новый пользователь пытается войти в систему с помощью social перед регистрацией, AUTH0 должен ответить ошибкой и сначала попросит пользователя зарегистрироваться. Сегодня, когда пользователь входит в Social без регистрации, AUTH0 рассматривает его как регистрацию.

exports.google_LogIn = function(req, res, next) {
  passport.authenticate("google", {
    scope: ["profile", "email"]
  })(req, res, next);
}

1 Ответ

0 голосов
/ 01 февраля 2020

Ваша стратегия 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('/');
  });
...