コード例 #1
0
 public function actionCreateUser()
 {
     // TODO: 内测通过后增加请求的限制
     $util = Yii::$app->util;
     $request = Yii::$app->getRequest();
     // AJAX POST请求参数
     $params = $request->post();
     $params = array_map('htmlEntityString', $params);
     if (isset($params['busi']) && $params['busi']) {
         $busi = $params['busi'];
     } elseif (isset($params['ca']) && $params['ca']) {
         $busi = $params['ca'];
     } else {
         $busi = '';
     }
     $password = isset($params['password']) && $params['password'] ? $params['password'] : '';
     // $rePassword = (isset($params['repassword']) && $params['repassword']) ? $params['repassword'] : '';;
     if (empty($busi)) {
         $util->formatResData(1104, 'param_busi_miss', ['msg' => '业务标识参数缺失']);
     }
     // if (empty($password) || empty($rePassword)) {
     if (empty($password)) {
         $util->formatResData(1101, 'param_missing_password', ['msg' => '密码不能为空']);
     }
     $regular = "/((?=.*\\d)(?=.*\\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))^.{8,16}\$/";
     $space = '/\\s/';
     if (preg_match($space, $password)) {
         $util->formatResData(1110, 'error_password_space', ['msg' => '密码不能包含空格']);
     }
     /*
             if (empty($rePassword)) {
        $util->formatResData(1102, 'param_missing_repassword', ['msg' => '密码确认不能为空']);
             }
     */
     if (!preg_match($regular, $password)) {
         $util->formatResData(1107, 'error_password_format', ['msg' => '密码格式不正确']);
     }
     /*
             if ($password !== $rePassword) {
        $util->formatResData(1100, 'error_password_nequal', ['msg' => '两次密码输入不符']);
             }
     */
     $config = $util->loadConfig('flow');
     if (empty($config)) {
         $util->formatResData(1106, 'error_config_miss', ['msg' => '流程配置缺失']);
     }
     $ca = trim($util->routedecrypt($busi));
     $result = false;
     try {
         $session = Yii::$app->getSession();
         $curBusiName = trim($ca);
         $curBusiStep = $session->get($curBusiName, '');
         if (!isset($config[$curBusiName]) && !isset($config[$curBusiName][$curBusiStep])) {
             $util->formatResData(1001, 'missing_busi_param', ['msg' => '系统繁忙,请稍后重试']);
         }
         $stepConfig = $config[$curBusiName][$curBusiStep];
         $nextStep = isset($stepConfig['next_step']) ? $stepConfig['next_step'] : null;
         $relStep = 'step' . ($nextStep - 1);
         if (!$relStep || $curBusiStep !== $relStep) {
             $util->formatResData(1002, 'error_curstep_illegal', ['msg' => '系统繁忙,请稍后重试']);
         }
         $mobile = $session->get($curBusiName . '_tool', '');
         if (empty($mobile) || !$mobile) {
             // TODO::怎么处理
             $util->formatResData(1003, 'missing_mobile_param', ['msg' => '系统繁忙,请稍后重试']);
         }
         $register = $session['register_returnurl'];
         if (empty($register)) {
             $register = 'http://' . $_SERVER['HTTP_HOST'] . '/user/login';
         }
         $data = ['mobile' => $mobile, 'password' => $password, 'open_id' => openId(), 'reg_channel' => Yii::$app->util->judgTransUrl($register)['app_name']];
         $mUser = new UserBaseInfo();
         $unique = $mUser->uniqueUser($mobile);
         if ($unique) {
             $util->formatResData(1109, 'error_mobile_register', ['msg' => '该手机已经被注册']);
         }
         $data['id'] = $result = $mUser->register($data);
         $session['tpb_user'] = $data;
     } catch (\Exception $e) {
         // TODO: 增加日志记录
     }
     if ($result) {
         $content = false;
         if (isset($stepConfig['next_step_tpl']) && $stepConfig['next_step_tpl']) {
             try {
                 $content = $this->renderAjax($stepConfig['next_step_tpl'], ['config' => $stepConfig, 'route' => $ca, 'tool' => $mobile]);
             } catch (\Exception $e) {
                 // TODO: 对存在模板情况进行处理
             }
         }
         $param = ['msg' => '注册成功', 'appCookieUrl' => Url::toRoute(['sso/app-cookie'], true)];
         if ($content) {
             $param['content'] = $content;
         }
         // 用户信息存入SESSION
         $session->set(UserBaseInfo::SESSION_KEY_USER, ['id' => $result, 'name' => '', 'mobile' => $mobile, 'avatar' => '', 'email' => '', 'gender' => UserBaseInfo::GENDER_UNKNOWN, 'open_id' => $data['open_id']]);
         $cookies = Yii::$app->response->cookies;
         $times = time() + 60 * 60 * 24;
         $id = ['name' => UserBaseInfo::COOKIE_KEY_ID, 'value' => $result, 'expire' => $times];
         $userId = ['name' => UserBaseInfo::COOKIE_KEY_NAME, 'value' => $mobile, 'expire' => $times];
         $avatar = ['name' => 'avatar', 'value' => '', 'expire' => $times];
         $openId = ['name' => 'open_id', 'value' => $data['open_id'], 'expire' => $times];
         $cookie = ['id' => $id, 'userId' => $userId, 'avatar' => $avatar, 'open_id' => $openId];
         $util->cookie($cookie, $times);
         $formatResData = ['code' => 0, 'msg' => 'success', 'data' => $param];
         // $util->formatResData(0,'success', ['url' => $returnUrl]);
         echo json_encode($formatResData);
     } else {
         $util->formatResData(1302, 'error_register', ['msg' => '注册失败']);
     }
 }
コード例 #2
0
ファイル: UserService.php プロジェクト: songhongyu/datecenter
 /**
  * 注册功能
  *
  * @param Array $user
  *        ~
  *        $user = [
  *            'mobile' => '',
  *            'password' => '',
  *            'reg_channel' => '',
  *            'reg_ip' => ''
  *        ]
  *        ~
  *
  * @return array
  */
 public function register($user)
 {
     if (isset($user['_format'])) {
         unset($user['_format']);
     }
     $mobile = isset($user['mobile']) ? $user['mobile'] : '';
     if (!$mobile) {
         return responseArray(1101, 'mobile_params_missing', '手机号不能为空');
     }
     if (!\Yii::$app->util->regularMobile($mobile)) {
         return responseArray(2101, 'mobile_format_error', '手机号码格式有误');
     }
     $userInfo = new UserBaseInfo();
     $count = $userInfo->uniqueUser($mobile);
     if ($count > 0) {
         return responseArray(1103, 'mobile_been_registered', '手机已被注册');
     }
     $password = isset($user['password']) ? $user['password'] : '';
     if (!$password) {
         return responseArray(1102, 'password_params_missing', '密码不能为空');
     }
     // 正则匹配 密码格式
     $preg = "/((?=.*\\d)(?=.*\\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))^.{8,16}\$/";
     $space = "/\\s/";
     $numSpace = preg_match($space, $password);
     $num = preg_match($preg, $password);
     if (!$num) {
         return responseArray(2102, 'password_format_wrong', '密码格式有误');
     }
     if ($numSpace) {
         return responseArray(2103, 'password_not_contain_space', '密码不允许包含空格');
     }
     $reg_channel = isset($user['reg_channel']) ? $user['reg_channel'] : '';
     if (!$reg_channel) {
         return responseArray(1103, 'channel_params_missing', '注册渠道不能为空');
     }
     $reg_ip = isset($user['reg_ip']) ? $user['reg_ip'] : '';
     if (!$reg_ip) {
         return responseArray(1104, 'ip_params_missing', '注册IP不能为空');
     }
     $user['open_id'] = openId();
     $userInfo = new UserBaseInfo();
     $userId = $userInfo->register($user);
     if ($userId) {
         $registerUser = UserBaseInfo::findOne($userId);
         // TODO:: 通知其他应用系统
         $ret = $this->generateToken();
         $ret['username'] = $registerUser->username;
         $ret['open_id'] = $registerUser->open_id;
         $ret['mobile'] = $registerUser->mobile;
         $ret['password'] = $registerUser->password;
         $ret['password_salt'] = $registerUser->password_salt;
         return responseArray(0, 'success', '注册成功', $ret);
     } else {
         return responseArray(1, 'network_anomaly', '网络异常,请稍后重试');
     }
 }
コード例 #3
0
 /**
  * Action Create-User
  */
 public function actionCreateUser()
 {
     // TODO: 内测痛过后增加请求的限制
     $config = Yii::$app->util->loadConfig('flow');
     $ca = 'user/register';
     $session = Yii::$app->session;
     $session->open();
     $curBusiName = $ca;
     $curBusiStep = 'step3';
     //$session[$ca];
     $mobile = '18601352377';
     //$session[$ca]['data']['mobile'];
     $password = '******';
     //$session[$ca]['data']['password'];
     $rePassword = '******';
     //$session[$ca]['data']['re_password'];
     if (empty($password) || empty($rePassword)) {
         Yii::$app->util->formatResData(1000, 'param_missing_password', '密码不能为空');
     }
     if (empty($rePassword)) {
         Yii::$app->util->formatResData(1001, 'param_missing_repassword', '密码确认不能为空');
     }
     if ($password !== $rePassword) {
         Yii::$app->util->formatResData(1100, 'error_password_nequal', '两次密码输入不符');
     }
     if (!isset($config[$curBusiName]) && !isset($config[$curBusiName][$curBusiStep])) {
         Yii::$app->util->formatResData(1002, 'missing_busi_param', '系统繁忙,请稍后重试');
     }
     $stepConfig = $config[$curBusiName][$curBusiStep];
     $relStep = isset($stepConfig['relStep']) ? $stepConfig['relStep'] : null;
     if (!$relStep || $curBusiStep !== $relStep) {
         Yii::$app->util->formatResData(1200, 'error_curstep_illegal', '系统繁忙,请稍后重试');
     }
     $result = false;
     $data = ['mobile' => $mobile, 'password' => $password];
     try {
         $mUser = new UserBaseInfo();
         $result = $mUser->register($data);
     } catch (\Exception $e) {
         // TODO: 增加日志记录
     }
     if ($result) {
         $user = ['id' => $result, 'mobile' => $mobile];
         $session['user'] = $user;
         unset($session[$curBusiName]);
         unset($session['captcha_' . $curBusiName]);
         Yii::$app->util->formatResData(0, 'success', ['url' => $stepConfig['url']]);
     } else {
         Yii::$app->util->formatResData(1300, 'error_register', '注册失败');
     }
 }