/** * Меняем ссылки на добавление и удаление ключей * @param ClientInterface $client external auth client instance. * @param string $text link text, if not set - default value will be generated. * @param array $htmlOptions link HTML options. * @throws InvalidConfigException on wrong configuration. */ public function clientLink($client, $text = null, array $htmlOptions = []) { echo Html::beginTag('div', ['class' => 'col-xs-4']); $exists = UserOauthKey::findOne(['user_id' => Yii::$app->user->id, 'provider_id' => UserOauthKey::getAvailableClients()[$client->getId()]]); if ($exists) { $button = Html::a('<span class="glyphicon glyphicon-trash" aria-hidden="true"></span> <span class="hidden-xs">' . Yii::t('user', 'Удалить') . '</span>', Url::toRoute(['auth/unbind', 'id' => $client->getId()]), ['class' => 'btn btn-danger btn-sm', 'onclick' => '$(this).off("click"); return true;']); } else { $viewOptions = $client->getViewOptions(); if (isset($viewOptions['popupWidth'])) { $htmlOptions['data-popup-width'] = $viewOptions['popupWidth']; } if (isset($viewOptions['popupHeight'])) { $htmlOptions['data-popup-height'] = $viewOptions['popupHeight']; } $htmlOptions['class'] = 'btn btn-success btn-sm'; $button = Html::a('<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> <span class="hidden-xs">' . Yii::t('user', 'Добавить') . '</span>', $this->createClientUrl($client), $htmlOptions); } echo Html::tag('span', $button, ['class' => 'auth-icon ' . $client->getName(), 'style' => 'padding-left: 40px; margin-bottom: 10px;']); echo Html::endTag('div'); }
/** * Удлаение ключа авторизации соц. сети (отвзяывание) * @param $id - ID ключа авторизации * @return \yii\web\Response */ public function actionUnbind($id) { /** @var \lowbase\user\models\UserOauthKey $key */ $key = UserOauthKey::findOne(['user_id' => Yii::$app->user->id, 'provider_id' => UserOauthKey::getAvailableClients()[$id]]); if (!$key) { Yii::$app->session->setFlash('error', Yii::t('user', 'Ключ не найден')); } else { /** @var \lowbase\user\models\User $user */ $user = User::findOne($key->user_id); if ($user) { if (UserOauthKey::isOAuth($user->id) <= 1 && $user->email === null) { Yii::$app->session->setFlash('error', Yii::t('user', 'Нельзя отвязать единственную соц. сеть, не заполнив Email')); } elseif (UserOauthKey::isOAuth($user->id) <= 1 && $user->password_hash === null) { Yii::$app->session->setFlash('error', Yii::t('user', 'Нельзя отвязать единственную соц. сеть, не заполнив пароль')); } else { $key->delete(); Yii::$app->session->setFlash('success', Yii::t('user', 'Ключ входа удален')); } } } return $this->redirect(Yii::$app->request->referrer); }