Пример #1
0
 public function oAuthSuccess($client)
 {
     $info = $client->api('/me?fields=id,name,email,birthday,gender,website,link,about', 'GET');
     $exist_user_id = FacebookLogin::getExistUserId($info['id']);
     if ($exist_user_id != "") {
         $identity = User::findOne(['id' => $exist_user_id]);
         \Yii::$app->user->login($identity, 3600 * 24 * 30);
         $this->redirect('/id' . $exist_user_id);
     } else {
         $locale = $client->api('/me?fields=locale', 'GET')['locale'];
         $location_work_education = $client->api('/me?locale=' . $locale . '&fields=work,education{school},location', 'GET');
         $name = $info['name'];
         $email = $info['email'];
         $bday = explode("/", $info['birthday']);
         $bday = $bday[2] . "-" . $bday[0] . "-" . $bday[1];
         // Стать
         $sex = $info['gender'] == 'male' ? 2 : 1;
         // Місто
         $city = $location_work_education['location']['name'];
         // Країна
         if ($location_work_education['location']['id']) {
             $country = FacebookLogin::getUserCountry($locale, $location_work_education['location']['id'], $client);
         } else {
             $country = "";
         }
         // Робота
         $work = FacebookLogin::getUserWork($location_work_education['work']);
         // Освіта
         $education = FacebookLogin::getUserEducation($location_work_education['education']);
         // Сайт
         $site = $info['website'];
         // Фейсбук сторінка
         $fb = $info['link'];
         // Аватар
         FacebookLogin::copyUserAvatar($info['id']);
         \Yii::$app->db->createCommand("\n                INSERT INTO user (name, email, bday, sex, country, city, work, education, site, fb, avatar, rating, created_at, facebook_id)\n                VALUES ('{$name}', '{$email}', '{$bday}', '{$sex}', '{$country}', '{$city}', '{$work}', '{$education}', '{$site}', '{$fb}', 'fb_user_" . $info['id'] . ".jpg', 1, '" . time() . "', '" . $info['id'] . "')\n            ")->execute();
         $user_id = \Yii::$app->db->getLastInsertID();
         $identity = User::findOne(['id' => $user_id]);
         \Yii::$app->user->login($identity);
         User::setDefaultPrivacy($user_id);
         Album::createAlbum($user_id);
         $this->redirect("/id" . $user_id);
     }
 }
Пример #2
0
 public function actionSignup()
 {
     if (!Yii::$app->user->isGuest) {
         return $this->redirect('/id' . Yii::$app->user->getId());
     }
     $model = new SignupForm();
     if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
         Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validate($model);
     }
     if ($model->load(Yii::$app->request->post())) {
         if ($user = $model->signup()) {
             $hash = $user->email . $user->password;
             for ($i = 0; $i < 13; ++$i) {
                 $hash = sha1(md5($hash) . $user->email . sha1($user->password));
             }
             $text = 'Здравствуйте! Поздравляем Вас с регистрацией на www.fotonastiya.com' . '<br>';
             $text .= 'Чтобы подтвердить регистрацию, перейдите по этой ссылке, пожалуйста:';
             $text .= '<a href="http://fotonastiya.com/activate/' . $user->getId() . '/' . $hash . '">http://fotonastiya.com/activate...</a>' . '<br>';
             $text .= 'Вы получили это сообщение, потому что зарегистрировали свой email на сайте www.fotonastiya.com' . '<br>';
             $text .= 'Если данное письмо попало к Вам по ошибке, проигнорируйте его, пожалуйста, и примите наши извинения.' . '<br>';
             $text .= 'С наилучшими пожеланиями, администрация сайта www.fotonastiya.com' . '<br>';
             Yii::$app->mailer->compose()->setFrom('*****@*****.**')->setTo($user->email)->setSubject('Реєстрація на сайті fotonastiya.com')->setTextBody($text)->setHtmlBody($text)->send();
             User::setStatus($user->getId(), User::STATUS_NOT_ACTIVATED);
             User::setActivateKey($user->getId(), $hash);
             User::addRating($user->getId(), 1 + mt_rand() % 100000000.0 / 10000000000000.0);
             User::setDefaultPrivacy($user->getId());
             Album::createAlbum($user->getId());
             return $this->redirect('user/success');
         }
     }
     return $this->render('signup', ['model' => $model]);
 }