Как настроить рендер при входе через соцсети dektrium/yii2-user?

Для настройки рендера при входе через соцсети с использованием расширения dektrium/yii2-user в Yii2, вам понадобится выполнить несколько шагов.

1. Установите расширение dektrium/yii2-user, если вы еще этого не сделали. Выполните следующую команду через Composer в командной строке:

   composer require dektrium/yii2-user

2. Подключите расширение в файле конфигурации приложения config/web.php. Добавьте следующий код:

   'modules' => [
       'user' => [
           'class' => 'dektriumuserModule',
           // Другие настройки модуля
       ],
   ],

3. Создайте папку views в вашем приложении, если она еще не существует. Затем создайте папку user внутри папки views.

4. В папке views/user создайте файлы login.php и login-social.php.

- login.php используется для отображения формы входа пользователя. В этом файле вы можете настроить необходимые поля формы, например, имя пользователя и пароль.

   <?php
   use yiihelpersHtml;
   use yiibootstrapActiveForm;

   $this->title = 'Login';
   $this->params['breadcrumbs'][] = $this->title;
   ?>

   <h1><?= Html::encode($this->title) ?></h1>

   <p>Please fill out the following fields to login:</p>

   <?php $form = ActiveForm::begin([
       'id' => 'login-form',
       'options' => ['class' => 'form-horizontal'],
       'fieldConfig' => [
           'template' => "{label}n<div class="col-lg-3">{input}</div>n<div class="col-lg-6">{error}</div>",
           'labelOptions' => ['class' => 'col-lg-1 control-label'],
       ],
   ]); ?>

   <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>

   <?= $form->field($model, 'password')->passwordInput() ?>

   <?= $form->field($model, 'rememberMe')->checkbox([
       'template' => "<div class="col-lg-offset-1 col-lg-3">{input} {label}</div>n<div class="col-lg-6">{error}</div>",
   ]) ?>

   <div class="form-group">
       <div class="col-lg-offset-1 col-lg-11">
           <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
       </div>
   </div>

   <?php ActiveForm::end(); ?>

- login-social.php - это шаблон для отображения кнопок для входа через социальные сети. Вам нужно будет создать кнопки для каждой социальной сети, для которой вы хотите разрешить вход. В примере ниже показано, как создавать кнопки для входа через Facebook и Google.

   <?php
   use yiiauthclientwidgetsAuthChoice;
   use yiihelpersHtml;

   $this->title = 'Login';
   $this->params['breadcrumbs'][] = $this->title;
   ?>

   <h1><?= Html::encode($this->title) ?></h1>

   <p>Please fill out the following fields to login:</p>

   <?= AuthChoice::widget([
       'baseAuthUrl' => ['/user/security/auth'],
       'popupMode' => false,
       'options' => ['class' => 'list-unstyled'],
       'clients' => [
           'facebook' => [
               'class' => 'yiiauthclientclientsFacebook',
               'clientId' => 'your-client-id',
               'clientSecret' => 'your-client-secret',
           ],
           'google' => [
               'class' => 'yiiauthclientclientsGoogle',
               'clientId' => 'your-client-id',
               'clientSecret' => 'your-client-secret',
           ],
       ],
   ]) ?>

5. Дополнительно, если вы хотите настроить форму для регистрации и восстановления пароля, вам необходимо создать файлы registration.php и request-password-reset.php в папке views/user. Вы можете настроить эти файлы аналогично файлу login.php.

6. Просмотр формы входа через соцсети через расширение dektrium/yii2-user теперь настроен. Вы можете использовать метод render() в действиях вашего контроллера, чтобы отобразить файлы представления, которые мы создали ранее.

Например, в вашем действии контроллера SiteController.php вы можете добавить следующий код:

   public function actionLogin()
   {
       $model = new LoginForm();

       if ($model->load(Yii::$app->request->post()) && $model->login()) {
           return $this->goBack();
       }

       return $this->render('login', [
           'model' => $model,
       ]);
   }

Теперь, при доступе к маршруту site/login, форма входа будет отображаться на основе файла login.php, а кнопки социальных сетей будут отображаться на основе файла login-social.php.

7. Не забудьте настроить данные для входа через социальные сети в файле конфигурации приложения config/web.php. Замените 'your-client-id' и 'your-client-secret' соответствующими данными для каждой социальной сети, для которой вы хотите настроить вход.

   'modules' => [
       //..
       'user' => [
           'class' => 'dektriumuserModule',
           'authClientCollection' => [
               'class' => 'yiiauthclientCollection',
               'clients' => [
                   'facebook' => [
                       'class' => 'yiiauthclientclientsFacebook',
                       'clientId' => 'your-client-id',
                       'clientSecret' => 'your-client-secret',
                   ],
                   'google' => [
                       'class' => 'yiiauthclientclientsGoogle',
                       'clientId' => 'your-client-id',
                       'clientSecret' => 'your-client-secret',
                   ],
               ],
           ],
           // Другие настройки модуля
       ],
       //..
   ],

Этими шагами вы должны настроить рендер при входе через соцсети с использованием расширения dektrium/yii2-user в Yii2.