Как настроить url возврата для Oath?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Как настроить url возврата для Oath?

Сообщение SaintRu »

Всем здравствуйте,
Для авторизации через Google использую виджет yii\authclient\widgets\AuthChoice::widget

Для авторизации по ответу от гугла используется экшн

Код: Выделить всё

    public function onAuthSuccess(ClientInterface $client) //: void
    {
        $network = $client->getId();
        $attributes = $client->getUserAttributes();
        $identity = ArrayHelper::getValue($attributes, 'id');
        $email = $attributes['email'] ?? null;
        try {
            $user = $this->networkService->auth($network, $identity, $email);
            \Yii::$app->user->login($user, \Yii::$app->params['user.rememberMeDuration']);
        } catch (\DomainException $e) {
            \Yii::$app->errorHandler->logException($e);
            \Yii::$app->session->setFlash('error', $e->getMessage());
        }
    }
Как заставить сайт переходить на ту страницу, откуда была запущена аутентификация? У меня после авторизации сайт переходит на главную
Мой старт-ап ;) https://website39.site
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как настроить url возврата для Oath?

Сообщение Dominus »

Код: Выделить всё

    public function actions()
    {
        return [
            'auth' => [
                'class' => 'yii\authclient\AuthAction',
                'successCallback' => [$this, 'onAuthSuccess'],
                'successUrl' => yii\helpers\Url::to(['/site/index']),// Перенаправление после успешной авторизации
                'cancelUrl' => yii\helpers\Url::to(['/site/index']), // Перенаправление после не успешной авторизации
            ],
        ];
    }    
    //...
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Как настроить url возврата для Oath?

Сообщение SaintRu »

Dominus писал(а): 2021.11.14, 12:03

Код: Выделить всё

    public function actions()
    {
        return [
            'auth' => [
                'class' => 'yii\authclient\AuthAction',
                'successCallback' => [$this, 'onAuthSuccess'],
                'successUrl' => yii\helpers\Url::to(['/site/index']),// Перенаправление после успешной авторизации
                'cancelUrl' => yii\helpers\Url::to(['/site/index']), // Перенаправление после не успешной авторизации
            ],
        ];
    }    
    //...
Спасибо! Все работает.
Мой старт-ап ;) https://website39.site
SaintRu
Сообщения: 88
Зарегистрирован: 2020.05.13, 11:22
Контактная информация:

Re: Как настроить url возврата для Oath?

Сообщение SaintRu »

Dominus писал(а): 2021.11.14, 12:03

Код: Выделить всё

    public function actions()
    {
....	
З.Ы. возникла одна ошибка
Если предварительно в сессии сохраняется урл страницы с которой отправляется запрос на Oath2 то не правильно срабатывает action,
такой вариант дает обратный урл /auth/network (т.е. текущий контроллер), в $session->get('link') ссылка верная (протестировано)

Код: Выделить всё

    public function actions()
    {

        $session = \Yii::$app->session;
        if ($session->isActive) {
            $returnLink = $session->get('link');
            $session->remove('link');
        } else {
            $returnLink = '/about';
        }
        return [
            'auth' => [
                'class' => AuthAction::class,
                'successCallback' => [$this, 'onAuthSuccess'],
                'successUrl' => Url::to([$returnLink], true),
            ],
        ];
    }
Если в 'successUrl' явно прописать эту ссылку, то все работает
Мой старт-ап ;) https://website39.site
Ответить