/** * Create a new user * * <b>Request Type</b>: POST<br/><br/> * <b>Request Endpoint</b>:http://{server-domain}/management/user<br/><br/> * <b>Content-type</b>: application/json<br/><br/> * <b>Summary</b>: This api is used for billing account to create a new user * <br/><br/> * * <b>Request Params</b>:<br/> * email: string, the user email, required<br/> * role: string, the user role, required<br/> * <br/><br/> * * <b>Response Params:</b><br/> * ack: integer, mark the create result, 0 means create successfully, 1 means create fail<br/> * data: array, json array to describe the user created<br/> * <br/><br/> * * <b>Request Example:</b><br/> * <pre> * { * "email" : "*****@*****.**", * "role" : "admin" * } * </pre> * <br/><br/> * * <b>Response Example</b>:<br/> * <pre> * { * 'ack' : 1, * 'data': {"msg": "您当前已成功发送验证邮件到sarazhang@augmentum.com.cn邮箱中", "user": {name:"Devin Jin", avatar:"path/to/avatar", email:"*****@*****.**", isActivated:false}} * } * </pre> */ public function actionCreate() { $params = $this->getParams(); if (empty($params['email'])) { throw new InvalidParameterException(['email' => Yii::t('common', 'email_is_required')]); } $params['email'] = mb_strtolower($params['email']); if (!StringUtil::isEmail($params['email'])) { throw new InvalidParameterException(['email' => Yii::t('helpDesk', 'email_format_wrong')]); } $user = User::getByEmail($params['email']); if (!empty($user)) { throw new InvalidParameterException(['email' => Yii::t('helpDesk', 'email_has_used')]); } $user = new User(); $user->email = $params['email']; $user->role = $params['role']; $user->avatar = Yii::$app->params['defaultAvatar']; $user->isActivated = User::NOT_ACTIVATED; $user->accountId = $this->getAccountId(); if ($user->save()) { $currentUser = $this->getUser(); $link = Yii::$app->request->hostInfo . '/site/invite/code?type=2'; //type=2 means invite user account $result = EmailUtil::sendInviteEmail($user, $currentUser->name, $link, self::SUBJECT); if ($result) { return ['user' => $user]; } else { throw new ServerErrorHttpException("validation save fail"); } } throw new ServerErrorHttpException("create user fail"); }
/** * create a user by email(generate-by-email) */ public function actionGenerateByEmail($email) { $email = mb_strtolower($email); $user = User::getByEmail($email); if (!empty($user)) { echo 'email is used' . PHP_EOL; return; } $name = Yii::$app->params['defaultName']; $accountId = Account::create('', '', $name); $attributes = ['status' => Account::STATUS_ACTIVATED, 'availableExtMods' => Yii::$app->params['extMods'], 'serviceStartAt' => new \MongoDate()]; Account::updateAll($attributes, ['_id' => $accountId]); $salt = StringUtil::rndString(6); $password = User::encryptPassword(md5(Yii::$app->params['defaultPwd']), $salt); $user = new User(); $user->email = $email; $user->accountId = $accountId; $user->name = $name; $user->role = User::ROLE_ADMIN; $user->isActivated = User::ACTIVATED; $user->avatar = Yii::$app->params['defaultAvatar']; $user->language = Yii::$app->params['defaultLanguage']; $user->salt = $salt; $user->password = $password; if (!$user->save()) { Account::deleteAll(['_id' => $accountId]); SensitiveOperation::deleteAll(['accountId' => $accountId]); MessageTemplate::deleteAll(['accountId' => $accountId]); echo 'create account fail' . PHP_EOL; } else { echo 'create account successfully' . PHP_EOL; } }
/** * Send Reset password email */ public function actionSendResetPasswordEmail() { $email = $this->getParams('email'); $email = mb_strtolower($email); if (empty($email)) { throw new InvalidParameterException(['reset-email' => Yii::t('common', 'email_is_required')]); } if (!StringUtil::isEmail($email)) { throw new InvalidParameterException(['reset-email' => Yii::t('member', 'email_format_error')]); } //validate the email $user = User::getByEmail($email); if (empty($user)) { throw new InvalidParameterException(['reset-email' => Yii::t('common', 'incorrect_userid')]); } if (!empty($user) && !$user->isActivated) { throw new InvalidParameterException(['reset-email' => Yii::t('common', 'user_not_activate')]); } //generate the validation $validation = new Validation(); $validation->userId = $user->_id; $validation->expire = new \MongoDate(strtotime('+7 day')); if (!$validation->save()) { throw new ServerErrorHttpException("Failed to save validation"); } $host = Yii::$app->request->hostInfo; $link = $host . '/site/resetpassword?code=' . $validation->code; $mail = Yii::$app->mail; $vars = ['name' => $user->name, 'link' => $link, 'host' => $host]; $mail->setView('//mail/resetPassword', $vars, '//layouts/email'); $mail->sendMail($user->email, '群脉重置密码'); return ['status' => 'ok']; }