/** * Получение модели пользователя * @return bool|null|static */ public function getUser() { if ($this->_user === false) { $this->_user = User::findOne(['email' => $this->email]); } return $this->_user; }
/** * Поиск пользователя по ID * @param $id - ID пользователя * @return null|static * @throws NotFoundHttpException */ protected function findModel($id) { if (($model = User::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException(Yii::t('user', 'Пользователь не найден.')); } }
/** * Удлаение ключа авторизации соц. сети (отвзяывание) * @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); }