Example #1
0
 public function testManualId()
 {
     $user = new User();
     $user->_id = '4af9f23d8ead0e1d32000000';
     $user->name = 'John Doe';
     $user->title = 'admin';
     $user->age = 35;
     $user->save();
     $this->assertEquals(true, $user->exists);
     $this->assertEquals('4af9f23d8ead0e1d32000000', $user->_id);
     $raw = $user->getAttributes();
     $this->assertInstanceOf('MongoId', $raw['_id']);
 }
Example #2
0
 /**
  * @param User $model
  * @return UserDto
  */
 public static function toDto(User $model)
 {
     /** @var UserDetails $details */
     $details = $model->getUserDetails();
     /** @var UserBlob[] $blobs */
     $blobs = $model->getUserBlobs();
     /** @var UserDto $userDto */
     $userDto = new UserDto($model->getAttributes());
     $userDto->description = $details ? $details->description : '';
     $userDto->blobs = array();
     foreach ($blobs as $blob) {
         $userDto->blobs[] = $blob->blob_b64;
     }
     return $userDto;
 }
Example #3
0
 public function actionLogin()
 {
     //创建类型必须给出
     if (isset($_POST['type'])) {
         $type = $_POST['type'];
     } else {
         $this->sendErrorResponse(403);
     }
     //本地注册处理
     if ($type == WIS_USER) {
         if (isset($_POST['user_email']) && isset($_POST['user_pwd'])) {
             //邮箱是否已存在
             $rs = Yii::app()->db->createCommand()->select('user_id')->from('user')->where('user_email=:email', array(':email' => strtolower($_POST['user_email'])))->queryScalar();
             if ($rs) {
                 $this->sendDataResponse(User::model()->findByPk($rs)->getAttributes());
             }
             try {
                 $model = new User();
                 $model->attributes = $_POST;
                 $model->user_email = strtolower($model->user_email);
                 $model->user_pwd = trim($_POST['user_pwd']);
                 //生成用户昵称
                 $nick_name = explode('@', $_POST['user_email']);
                 $model->nick_name = $nick_name[0];
                 //                    $model->nick_name = Yii::app()->badWords->replacement($model->nick_name);
                 $model->nick_name = $model->nick_name;
                 $model->user_ext = $type;
                 $model->access_token = $this->getAccessToken();
                 $model->save();
                 $this->sendDataResponse($model->getAttributes());
             } catch (Exception $e) {
                 //本地用户创建失败!
                 $this->sendErrorResponse(500, $e->getMessage());
             }
         } else {
             $this->sendErrorResponse(403, '用户输入信息不全');
         }
     }
     //第三方登陆是否已注册
     if ($type != WIS_USER && isset($_POST['unique_str']) && isset($_POST['user_ico']) && isset($_POST['nick_name'])) {
         if ($type == FACE_BOOK_USER) {
             $user_ext_name = 'face_book';
         } elseif ($type == TWITTER_USER) {
             $user_ext_name = 'twitter';
         }
         //用户是否已存在
         $rs = Yii::app()->db->createCommand()->select('user_id')->from('user')->where('user_ext=:user_ext', array(':user_ext' => $_POST['type']))->andWhere('unique_str=:unique_str', array(':unique_str' => $_POST['unique_str']))->queryScalar();
         if ($rs) {
             //用户已存在,无须创建!直接返回数据
             $model = User::model()->findByPk($rs);
             $this->sendDataResponse($model->getAttributes());
         } else {
             //如果系统不存在,则创建用户
             try {
                 $model = new User();
                 $model->attributes = $_POST;
                 //第三方拿到的信息有 id,名称,头象
                 $model->nick_name = $_POST['nick_name'];
                 //                    $model->nick_name = Yii::app()->badWords->replacement($model->nick_name);
                 $model->nick_name = $model->nick_name;
                 $model->user_ext = $_POST['type'];
                 $model->user_ext_name = $user_ext_name;
                 $model->user_ico_b = $_POST['user_ico'];
                 $model->unique_str = $_POST['unique_str'];
                 $model->access_token = $this->getAccessToken();
                 $model->save();
             } catch (Exception $e) {
                 //第三方注册失败
                 $this->sendErrorResponse(500, $e->getMessage());
             }
             $this->sendDataResponse($model->getAttributes());
         }
     } else {
         $this->sendErrorResponse(403, '第三方登陆参数传递错误!');
     }
 }
 public function testManualIntId()
 {
     $user = new User();
     $user->_id = 1;
     $user->name = 'John Doe';
     $user->title = 'admin';
     $user->age = 35;
     $user->save();
     $this->assertEquals(true, $user->exists);
     $this->assertEquals(1, $user->_id);
     $raw = $user->getAttributes();
     $this->assertInternalType('integer', $raw['_id']);
 }
Example #5
0
 protected function proccessRequest($model = null)
 {
     if (Yii::app()->request->getPost('User') !== null) {
         if (!$model) {
             $model = new User('register');
             $model->makeForm('register', $this->params['content']->fields, $this->params['content']->fields_req);
         }
         $tpldata = array();
         $model->attributes = Yii::app()->request->getPost('User');
         if ($model->password == '') {
             $model->password = $model->password_repeat = $tpldata['generatedPassword'] = User::generatePassword();
             $model->askfill = true;
         }
         if ($model->validate()) {
             $model->save(false);
             $cfg = ContentUnit::loadConfig();
             $viewFileDir = $cfg['UnitRegister'] . '.register.templates.mail.';
             $tpldata['model'] = $model->getAttributes();
             $tpldata['settings'] = Yii::app()->settings->model->getAttributes();
             $tpldata['page'] = $this->params['content']->getWidgetPageArray();
             if ($this->params['content']->notify_admin) {
                 // send 'to_admin_notify' mail
                 Yii::app()->messenger->send('email', Yii::app()->settings->getValue('adminEmail'), '[' . $_SERVER['HTTP_HOST'] . '] ' . Yii::t('UnitRegister.main', 'New user registration'), Yii::app()->controller->renderPartial($viewFileDir . 'to_admin_notify', $tpldata, true));
             }
             if ($this->params['content']->is_emailauth_req) {
                 $model->saveAttributes(array('authcode' => User::hash($model->id . $model->login . time() . rand())));
                 $tpldata['model'] = $model;
                 // send 'to_user_confirm' mail
                 Yii::app()->messenger->send('email', $model->email, Yii::t('UnitRegister.main', 'Registration confirm'), Yii::app()->controller->renderPartial($viewFileDir . 'to_user_confirm', $tpldata, true));
                 return true;
             } else {
                 $model->saveAttributes(array('active' => true));
                 if ($this->params['content']->notify_user || $tpldata['generatedPassword']) {
                     // send 'to_user_notify' mail
                     Yii::app()->messenger->send('email', $model->email, Yii::t('UnitRegister.main', 'Registration completed'), Yii::app()->controller->renderPartial($viewFileDir . 'to_user_notify', $tpldata, true));
                 }
                 $loginForm = new LoginForm();
                 $loginForm->username = $model->email;
                 $loginForm->password = !empty($_POST['User']['password']) ? $_POST['User']['password'] : $tpldata['generatedPassword'];
                 if ($loginForm->login()) {
                     return true;
                 }
             }
         }
     }
     return false;
 }