/** * 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; }
/** * 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'); } }