Esempio n. 1
0
 public function actionActivated($_hash)
 {
     $cache = new CFileCache();
     $cache->init();
     $hash = $cache->get('registerActivated' . $_hash);
     $cache->delete('registerActivated' . $_hash);
     // Ключ не найден, возможно пытаются подобрать или истекло время отведенное для активации аккаунта
     if ($hash === FALSE) {
         user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Ключ для активации аккаунта не найден.'));
         $this->redirect(array('index'));
     }
     $user = Users::model()->findByPk($hash['user_id']);
     if (!$user) {
         user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Аккаунт не найден.'));
     } elseif ($user->isActivated()) {
         user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Аккаунт уже активирован.'));
     } else {
         // Создаю игровой аккаунт
         try {
             $l2 = l2('ls', $user->ls_id)->connect();
             $l2->insertAccount($user->login, $hash['password']);
             $user->activated = Users::STATUS_ACTIVATED;
             $user->save(FALSE);
             user()->setFlash(FlashConst::MESSAGE_SUCCESS, Yii::t('main', 'Активация аккаунта прошла успешно. Приятной игры!'));
             notify()->registerStep2($hash['email'], array('login' => $user->login, 'password' => $hash['password']));
         } catch (Exception $e) {
             user()->setFlash(FlashConst::MESSAGE_ERROR, $e->getMessage());
         }
     }
     $this->redirect(array('index'));
 }
Esempio n. 2
0
 public function actionStep2($hash)
 {
     $cache = new CFileCache();
     $cache->init();
     if (($hashInfo = $cache->get($this->_cacheName . $hash)) !== FALSE) {
         $cache->delete($this->_cacheName . $hash);
         $user = db()->createCommand("SELECT COUNT(0) FROM `{{users}}` WHERE `email` = :email AND `login` = :login LIMIT 1")->bindParam('email', $hashInfo['email'], PDO::PARAM_STR)->bindParam('login', $hashInfo['login'], PDO::PARAM_STR)->queryScalar();
         if ($user) {
             $newPassword = Users::generatePassword(rand(Users::PASSWORD_MIN_LENGTH, Users::PASSWORD_MAX_LENGTH));
             // Обновляю пароль на сервере
             try {
                 $l2 = l2('ls', $hashInfo['ls_id'])->connect();
                 $encryptPassword = $l2->passwordEncrypt($newPassword);
                 $login = $hashInfo['login'];
                 $email = $hashInfo['email'];
                 $res = $l2->getDb()->createCommand("UPDATE {{accounts}} SET password = :password WHERE login = :login LIMIT 1")->bindParam('password', $encryptPassword, PDO::PARAM_STR)->bindParam('login', $login, PDO::PARAM_STR)->execute();
                 if ($res) {
                     $encryptPassword = Users::hashPassword($newPassword);
                     db()->createCommand("UPDATE {{users}} SET password = :password WHERE email = :email AND login = :login LIMIT 1")->bindParam('password', $encryptPassword, PDO::PARAM_STR)->bindParam('email', $email, PDO::PARAM_STR)->bindParam('login', $login, PDO::PARAM_STR)->execute();
                     notify()->forgottenPasswordStep2($email, array('password' => $newPassword));
                     user()->setFlash(FlashConst::MESSAGE_SUCCESS, Yii::t('main', 'На почту указанную при регистрации отправлен новый пароль.'));
                 } else {
                     user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Произошла ошибка! Попробуйте повторить позже.'));
                 }
             } catch (Exception $e) {
                 user()->setFlash(FlashConst::MESSAGE_ERROR, $e->getMessage());
             }
         } else {
             user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Аккаунт не найден.'));
         }
     } else {
         user()->setFlash(FlashConst::MESSAGE_ERROR, Yii::t('main', 'Ключ для восстановления пароля не найден.'));
     }
     if (user()->hasFlash(FlashConst::MESSAGE_ERROR)) {
         $this->redirect(array('index'));
     }
     $this->redirect(array('/login/default/index'));
 }