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