Перенаправление пользователя на панель управления после успешного входа в систему через google aouth2 - PullRequest
0 голосов
/ 13 февраля 2020

Я использую oauth2 для входа через Google. Для этой цели я использую паспорт.
Я разрабатываю только успокоительный API. Эти API будут использоваться веб-панелью и мобильными приложениями.
Ниже приведен поток, который я думаю, как он работает, и я реализовал то же самое.
1. Пользователь нажимает логин через goole: api https://myserver/api/v1/auth/google
2. Паспорт перенаправляет пользователя на экран согласия, где пользователь дает разрешение
3. Google аутентифицирует пользователя и отправляет запрос на получение callbackUrl: https://myserver/api/v1/google/redirect
Здесь я получаю данные пользователя, которые храню их в БД и подписываю JWT с учетными данными пользователя, и я отправляю токен.

Проблема, которая у меня здесь, это ответ на запрос обратного вызова Google, а не пользователя.
Как я могу отправить JWT пользователю?

Я попытался перенаправить URL запрошенного хоста, как показано ниже.
res.redirect(${req.headers.host/dashboard?token=${jwt})

Но здесь проблема в том, что req.headers.host не является хостом пользователя.
У меня есть только один вариант - жестко закодировать URL-адрес хоста клиента. В этом случае он не может быть использован мобильными приложениями.
Возможно, мне что-то не хватает, помогите.


//models
const Customer = require('../../models').ParentCustomer
// validator
const {
    validateRegistration
} = require('../../services/ValidatorService')

//services
const generateJWT = require('../../services/JwtService/generate')


module.exports = async function(req, res) {

    console.log(req.user)
        const user = req.user._json
        //generate jwt
        const payload = {
            userName: user.name,
            email: user.email,
            role: 1,
            user_type: 2
        }
        //create db record
        const token = generateJWT(payload)
        res.redirect(http:\/\/localhost:4200/dashboard/welcome?accessToken=${token}&user_role_id=${payload.role}&uer_type_id=${payload.user_type})
        // return res.status(200).send({
        //     status: true,
        //     message: "Logged in successfully!",
        //     data: {
        //         accessToken: token
        //     }
        // })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...