/** * Валидация электронной почты * * Указывается обязательно при отсутствии * ключей авторизации соц. сетей */ public function emailValidate() { if (!$this->email && !UserOauthKey::isOAuth($this->id)) { $this->addError('email', Yii::t('user', 'Необходимо указать Email.')); } }
/** * Удлаение ключа авторизации соц. сети (отвзяывание) * @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); }