Как правильно реализовать аутентификацию OAuth 2.0 (passportjs) на сервере и связать с клиентом, чтобы после выполнения callback - вернулся user и в setHeader установились cookies с токенами?
Сейчас мой код выглядит примерно так:
@Get('google')
@UseGuards(GoogleAuthGuard)
async googleAuth2(@Res() res: Response) {
console.log('res', res);
}
@Get('google/callback')
@UseGuards(GoogleAuthGuard)
async googleCallback(@Req() req: any, @Res() res: Response) {
console.log('req', req.user);
const { accessTokenCookie, refreshTokenCookie, user } = req.user;
res.setHeader('Set-Cookie', [accessTokenCookie, refreshTokenCookie]);
res.req.user;
return res.redirect('http://localhost:3000/');
}
Проблема в том, что на клиенте роут
localhost:5000/api/auth/google выполняется в новом окне и связать это с логикой клиента не получается, так как не запускается никакой экшн на клиенте и не выполняется сага, которая диспатчит полученного юзера в стейт, и пропускает его на приватные роуты на клиенте.
const googleAuth = () => {
window.open('http://localhost:5000/api/auth/google', '_self')
}
Подскажите, какой fullstack flow для этой задачи вы используете, чтобы приложение работало правильно.