示例#1
0
文件: User.php 项目: quyettvq/luspel
 /**
  * function ::create ($data)
  */
 public static function create($data)
 {
     $now = strtotime('now');
     $username = Yii::$app->user->identity->username;
     $model = new User();
     if ($model->load($data)) {
         if ($log = new UserLog()) {
             $log->username = $username;
             $log->action = "Create";
             $log->object_class = "User";
             $log->created_at = $now;
             $log->is_success = 0;
             $log->save();
         }
         $model->created_at = $now;
         $model->dob = strtotime($model->dob);
         do {
             $path = FileUtils::generatePath($now);
         } while (file_exists(Yii::$app->params['images_folder'] . $path));
         $model->image_path = $path;
         $targetFolder = Yii::$app->params['images_folder'] . $model->image_path;
         $targetUrl = Yii::$app->params['images_url'] . $model->image_path;
         if (!empty($data['user-image'])) {
             $copyResult = FileUtils::copyImage(['imageName' => $model->image, 'fromFolder' => Yii::$app->params['uploads_folder'], 'toFolder' => $targetFolder, 'resize' => [[120, 120], [200, 200]], 'resizeType' => 2, 'removeInputImage' => true]);
             if ($copyResult['success']) {
                 $model->image = $copyResult['imageName'];
             }
         }
         // User class
         $model->generateAuthKey();
         $model->setPassword($model->password);
         if ($model->save()) {
             if ($log) {
                 $log->object_pk = $model->id;
                 $log->is_success = 1;
                 $log->save();
             }
             return $model;
         }
         $model->getErrors();
         return $model;
     }
     return false;
 }
示例#2
0
 /**
  * Register billing account
  *
  * <b>Request Type</b>: POST<br/><br/>
  * <b>Request Endpoint</b>:http://{server-domain}/api/site/register<br/><br/>
  * <b>Content-type</b>: application/json<br/><br/>
  * <b>Summary</b>: This api is used for registering user.
  * <br/><br/>
  *
  * <b>Request Params</b>:<br/>
  *     name: string, the user name<br/>
  *     email: string, the user email<br/>
  *     password: string, the user password<br/>
  *     <br/><br/>
  *
  * <b>Response Params:</b><br/>
  *     ack: integer, mark the create result, 1 means create successfully, 0 means create fail<br/>
  *     message: string, if create fail, it contains the error message<br/>
  *     data: array, json array to describe all users detail information<br/>
  *     <br/><br/>
  *
  * <b>Request Example:</b><br/>
  * <pre>
  * {
  *     "name" : "harrysun",
  *     "email" : "*****@*****.**",
  *     "company" : "Augmentum",
  *     "phone" : "13027785897",
  *     "captcha" : "123456"
  * }
  * </pre>
  * <br/><br/>
  *
  * <b>Response Example</b>:<br/>
  * <pre>
  * {
  *    'message': 'Register success.'
  * }
  * </pre>
  */
 public function actionRegister()
 {
     //set language zh_cn when sign up
     \Yii::$app->language = LanguageUtil::LANGUAGE_ZH;
     $data = $this->getParams();
     if (empty($data['name']) || empty($data['email']) || empty($data['company']) || empty($data['phone']) || empty($data['captcha']) || empty($data['position'])) {
         throw new BadRequestHttpException('missing param');
     }
     $phone = $data['phone'];
     $this->attachBehavior('CaptchaBehavior', new CaptchaBehavior());
     $this->checkCaptcha($phone, $data['captcha']);
     $email = mb_strtolower($data['email']);
     $user = User::getByEmail($email);
     if (!empty($user)) {
         //check if user active fail, send email again
         if (!$user->isActivated) {
             $validation = Validation::getByUserId($user->_id);
             return $this->_sendRegistEmail($user->_id, $data, $validation);
         } else {
             throw new InvalidParameterException(['email' => \Yii::t('common', 'unique_feild_email')]);
         }
     }
     $accountId = Account::create($data['company'], $phone, $data['name']);
     $user = new User();
     $user->email = $email;
     $user->position = $data['position'];
     $user->accountId = $accountId;
     $user->role = User::ROLE_ADMIN;
     $user->isActivated = User::NOT_ACTIVATED;
     $user->avatar = Yii::$app->params['defaultAvatar'];
     $user->language = LanguageUtil::DEFAULT_LANGUAGE;
     if ($user->save()) {
         return $this->_sendRegistEmail($user->_id, $data);
     } else {
         Account::deleteAll(['_id' => $accountId]);
         if ($user->getErrors('email')) {
             throw new InvalidParameterException(['email' => \Yii::t('common', 'unique_feild_email')]);
         }
         throw new ServerErrorHttpException('regist fail');
     }
 }