Пример #1
0
 /**
  * 执行第三方授权登录后的注册动作
  * 
  */
 public function doThirdRegistAction()
 {
     //第三方登录注册不校验验证码
     /*
             if(Wekit::load("verify.srv.PwCheckVerifyService")->checkVerify($this->getInput('code')) != true){
        $this->showError('USER:verifycode.error','index.php?m=u&c=login');
             }
     */
     //post参数中获取用户注册信息、第三方授权获取的信息通过hidden标签保存
     $username = $this->getInput('username', 'post');
     $password = $this->getInput('password', 'post');
     $email = $this->getInput('email', 'post');
     $gender = $this->getInput('gender', 'post');
     $uid = $this->getInput('uid', 'post');
     $type = $this->getInput('type', 'post');
     $avatar = $this->getInput('avatar', 'post');
     //执行注册
     Wind::import('SRC:service.user.dm.PwUserInfoDm');
     $userDm = new PwUserInfoDm();
     $userDm->setUsername($username);
     $userDm->setPassword($password);
     $userDm->setEmail($email);
     $userDm->setGender($gender);
     $userDm->setRegdate(Pw::getTime());
     $userDm->setLastvisit(Pw::getTime());
     $userDm->setRegip(Wind::getComponent('request')->getClientIp());
     $userDm->setStatus(0);
     Wind::import('SRV:user.srv.PwRegisterService');
     $registerService = new PwRegisterService();
     $registerService->setUserDm($userDm);
     // [u_regsiter]:插件扩展
     $this->runHook('c_register', $registerService);
     if (($info = $registerService->register()) instanceof PwError) {
         $this->showError($info->getError());
     }
     // 这里取了lastInsertId,但已经指定了主键的值,所以返回false表示成功。。
     if ($this->_getUserOpenAccountDs()->addUser($info['uid'], $uid, $type) == false) {
         $this->downloadThirdPlatformAvatar($info['uid'], $avatar);
     }
     // 以便后面登录用到
     $acctRelationData = array('uid' => $info['uid']);
     //继续登录
     $login = new PwLoginService();
     $this->runHook('c_login_dorun', $login);
     Wind::import('SRV:user.srv.PwRegisterService');
     $registerService = new PwRegisterService();
     $info = $registerService->sysUser($acctRelationData['uid']);
     if (!$info) {
         $this->showError('USER:user.syn.error');
     }
     $identity = PwLoginService::createLoginIdentify($info);
     $identity = base64_encode($identity . '|' . $this->getInput('backurl') . '|' . '0');
     $this->forwardRedirect(WindUrlHelper::createUrl('u/login/welcome', array('_statu' => $identity)));
 }