Я читал другие решения, но они не работают для меня.
[1] Это говорит об использовании else
, которое я уже использовал.
[2] Еще один говорит об использовании return
с done
, что кажется нелогичным, поскольку в документах не упоминается использование return
У меня есть страница, которую мне нужно загрузить, независимо от того, является ли пользователь вошли или нет. Если пользователь не вошел в систему, я должен показать кнопку входа, в противном случае кнопку выхода.
Это маршрут, где происходит ошибка:
app.get('/', (req, res, next) => {
if(req.query.code || req.cookie) { //either first time authenticating or already a user
passport.authenticate('google')(req, res, next)
}
res.render('index', { user: req.user });
})
Это маршрут I ударил, когда пользователь нажал на логин:
app.get('/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
Это мои настройки паспортной стратегии:
passport.use(
new GoogleStrategy({
callbackURL: `${process.env.address}`,
clientID: `${process.env.GOOGLE_SSO_CLIENT_ID}`,
clientSecret: `${process.env.GOOGLE_SSO_CLIENT_SECRET}`,
}, (accessToken, refreshToken, profile, done) => {
if(accessToken) {
User.findOne({email: profile.email}).then((currentUser) => {
if(currentUser){ // already exists
console.log('user is: ', currentUser);
done(null, currentUser)
// do something
} else { // if not, create user in our db
new User({
email: profile.email,
joinDate: Date.now(),
username: 'random'
}).save().then((newUser) => {
console.log('created new user: ', newUser);
done(null, newUser)
// do something
});
}
});
} else {
done(null, null)
}
})
)
Возможно, проблема в том, что я пытаюсь попасть по URL, где