/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('users.get.json', 'GET', ['fields' => implode(',', ['uid', 'first_name', 'last_name', 'photo_200', 'sex'])]); $attributes = array_shift($attributes['response']); $return_attributes = ['User' => [$this->first_name => $attributes['first_name'], $this->last_name => $attributes['last_name'], $this->avatar => $attributes['photo_200'], $this->gender => $this->normalizeSex()[$attributes['sex']], $this->email => isset($this->accessToken->params['email']) ? $this->accessToken->params['email'] : null, $this->status => $this->statusActive], 'provider_user_id' => $attributes['uid'], 'provider_id' => UserOauthKey::getAvailableClients()['vkontakte'], 'page' => $attributes['uid']]; return $return_attributes; }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('user', 'GET'); $emails = $this->api('user/emails', 'GET'); $verifiedEmail = ''; foreach ($emails as $email) { if ($email['verified'] && $email['primary']) { $verifiedEmail = $email['email']; } } $return_attributes = ['User' => [$this->email => $verifiedEmail, $this->first_name => $attributes['login'], $this->avatar => $attributes['avatar_url'], $this->gender => $this->male, $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['github'], 'page' => $attributes['login']]; return $return_attributes; }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('people/~:(' . implode(',', $this->attributeNames) . ')', 'GET'); $return_attributes = ['User' => [$this->email => $attributes['email-address'], $this->first_name => $attributes['first-name'], $this->last_name => $attributes['last-name'], $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['yandex'], 'page' => $attributes['public-profile-url']]; return $return_attributes; }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('me', 'GET', ['fields' => implode(',', ['id', 'email', 'first_name', 'last_name', 'picture.height(200).width(200)', 'gender'])]); $return_attributes = ['User' => [$this->email => $attributes['email'], $this->first_name => $attributes['first_name'], $this->last_name => $attributes['last_name'], $this->avatar => $attributes['picture']['data']['url'], $this->gender => $this->normalizeSex()[$attributes['gender']], $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['facebook'], 'page' => $attributes['id']]; return $return_attributes; }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('people/me', 'GET'); $return_attributes = ['User' => [$this->email => $attributes['emails'][0]['value'], $this->first_name => $attributes['name']['givenName'], $this->last_name => $attributes['name']['familyName'], $this->avatar => str_replace('sz=50', 'sz=200', $attributes['image']['url']), $this->gender => $this->normalizeSex()[$attributes['gender']], $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['google'], 'page' => $attributes['id']]; return $return_attributes; }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('info', 'GET'); $return_attributes = ['User' => [$this->email => $attributes['emails'][0], $this->first_name => $attributes['first_name'], $this->last_name => $attributes['last_name'], $this->avatar => 'https://avatars.yandex.net/get-yapic/' . $attributes['default_avatar_id'] . '/islands-200', $this->gender => $this->normalizeSex()[$attributes['sex']], $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['yandex'], 'page' => null]; return $return_attributes; }
/** * Удлаение ключа авторизации соц. сети (отвзяывание) * @param $id - ID ключа авторизации * @return \yii\web\Response */ public function actionUnbind($id) { $modelUser = $this->modelUser; /** @var UserOauthKey $model */ $model = UserOauthKey::findOne(['user_id' => \Yii::$app->user->id, 'provider_id' => UserOauthKey::getAvailableClients()[$id]]); if (!$model) { \Yii::$app->session->set('message', ['type' => 'danger', 'icon' => 'glyphicon glyphicon-warning-sign', 'message' => \Yii::t('app', 'Ключ не найден')]); } else { /** @var User $user */ $user = $modelUser::findOne($model->user_id); if ($user) { if (UserOauthKey::isOAuth($user->id) <= 1 && $user->email === null) { \Yii::$app->session->set('message', ['type' => 'danger', 'icon' => 'glyphicon glyphicon-warning-sign', 'message' => \Yii::t('app', 'Нельзя отвязать единственную соц. сеть, не заполнив Email')]); } elseif (UserOauthKey::isOAuth($user->id) <= 1 && $user->password_hash === null) { \Yii::$app->session->set('message', ['type' => 'danger', 'icon' => 'glyphicon glyphicon-warning-sign', 'message' => \Yii::t('app', 'Нельзя отвязать единственную соц. сеть, не заполнив пароль')]); } else { $model->delete(); \Yii::$app->session->set('message', ['type' => 'danger', 'icon' => 'glyphicon glyphicon-ok', 'message' => \Yii::t('app', 'Ключ входа удален')]); } } } return $this->redirect(\Yii::$app->request->referrer); }
/** * Получение аттрибутов * @return array * @throws \yii\base\Exception */ protected function initUserAttributes() { $attributes = $this->api('account/verify_credentials.json', 'GET'); $return_attributes = ['User' => [$this->email => '', $this->first_name => $attributes['name'], $this->avatar => '', $this->gender => $this->male, $this->status => $this->statusActive], 'provider_user_id' => $attributes['id'], 'provider_id' => UserOauthKey::getAvailableClients()['twitter'], 'page' => $attributes['screen_name']]; return $return_attributes; }