コード例 #1
0
ファイル: wechatauth.php プロジェクト: cutcuty/wecenterthing
 public function redirect_action()
 {
     if (!in_weixin() or get_setting('weixin_account_role') != 'service') {
         //HTTP::redirect(base64_decode($_GET['redirect']));
     }
     if ($_GET['code'] and get_setting('weixin_app_id') and get_setting('weixin_app_secret')) {
         if (!$_GET['thirdlogin'] || !$_GET['state']) {
             H::redirect_msg('授权失败: Redirect 微信三方登录发起的来源ID错误, Code: ' . htmlspecialchars($_GET['code']));
         }
         $thirdlogin = $_GET['thirdlogin'];
         $third_info = $this->model('openid_weixin_thirdlogin')->get_third_party_login_by_name($thirdlogin);
         if (!$third_info || $_GET['state'] != $third_info['token']) {
             H::redirect_msg('授权失败: Redirect 微信三方登录发起的来源ID错误, Code: ' . htmlspecialchars($_GET['code']));
         }
         if ($access_token = $this->model('openid_weixin_weixin')->get_sns_access_token_by_authorization_code($_GET['code'])) {
             if ($access_token['errcode']) {
                 H::redirect_msg('授权失败: Redirect ' . $access_token['errcode'] . ' ' . $access_token['errmsg'] . ', Code: ' . htmlspecialchars($_GET['code']));
             }
             if ($weixin_user = $this->model('openid_weixin_weixin')->get_user_info_by_openid($access_token['openid'])) {
                 //已有用户
                 $user_info = $this->model('account')->get_user_info_by_uid($weixin_user['uid']);
                 HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false));
             } else {
                 $access_user = $this->model('openid_weixin_weixin')->get_user_info_by_oauth_openid($access_token['access_token'], $access_token['openid']);
                 if ($access_user) {
                     if ($user_info = $this->model('openid_weixin_weixin')->weixin_auto_register($access_token, $access_user)) {
                         HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false));
                     } else {
                         H::redirect_msg('用户注册失效,请重试!, State: ' . htmlspecialchars($_GET['state']) . ', Code: ' . htmlspecialchars($_GET['code']));
                     }
                 } else {
                     H::redirect_msg('远程服务器忙,请稍后再试, State: ' . htmlspecialchars($_GET['state']) . ', Code: ' . htmlspecialchars($_GET['code']));
                 }
             }
             $callback_url = $third_info['url'];
             $query = array();
             $query['state'] = $third_info['token'];
             $query['openid'] = $access_token['openid'];
             $query['name'] = $third_info['name'];
             $callback_url = $callback_url . '?' . http_build_query($query);
             H::redirect_msg('授权成功,正在跳转...', $callback_url);
         } else {
             H::redirect_msg('远程服务器忙,请稍后再试, State: ' . htmlspecialchars($_GET['state']) . ', Code: ' . htmlspecialchars($_GET['code']));
         }
     } else {
         H::redirect_msg('授权失败, 请返回重新操作, URI: ' . $_SERVER['REQUEST_URI']);
     }
 }
コード例 #2
0
ファイル: weixin.php プロジェクト: ddxmaaa/wecenter-loudong
 public function weixin_auto_register($access_token, $access_user)
 {
     if ($user_info = $this->register_user($access_token, $access_user)) {
         $this->bind_account($access_user, $access_token, $user_info['uid']);
         HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], null, false));
         return true;
     }
     return false;
 }
コード例 #3
0
ファイル: account.php プロジェクト: actcms/houziquan
 public function setcookie_login($uid, $user_name, $password, $salt, $expire = null, $hash_password = true)
 {
     if (!$uid) {
         return false;
     }
     if (!$expire) {
         HTTP::set_cookie('_user_login', get_login_cookie_hash($user_name, $password, $salt, $uid, $hash_password), null, '/', null, false, true);
     } else {
         HTTP::set_cookie('_user_login', get_login_cookie_hash($user_name, $password, $salt, $uid, $hash_password), time() + $expire, '/', null, false, true);
     }
     return true;
 }
コード例 #4
0
ファイル: weibo.php プロジェクト: egogg/wecenter-dev
 public function bind_action()
 {
     if (AWS_APP::session()->weibo_user) {
         $weibo_user_info = AWS_APP::session()->weibo_user;
         unset(AWS_APP::session()->weibo_user);
     }
     if ($_GET['error'] == 'access_denied') {
         H::redirect_msg(AWS_APP::lang()->_t('授权失败'), '/account/login/');
     }
     if ($this->user_id) {
         $weibo_user = $this->model('openid_weibo_oauth')->get_weibo_user_by_uid($this->user_id);
         if ($weibo_user) {
             H::redirect_msg(AWS_APP::lang()->_t('此账号已绑定微博账号'), '/account/login/');
         }
     }
     $callback_url = '/account/openid/weibo/bind/';
     if ($_GET['return_url']) {
         $callback_url .= 'return_url-' . $_GET['return_url'];
     }
     if ($_GET['code']) {
         if ($_GET['code'] != $weibo_user_info['authorization_code']) {
             $this->model('openid_weibo_oauth')->authorization_code = $_GET['code'];
             $this->model('openid_weibo_oauth')->redirect_url = $callback_url;
             if (!$this->model('openid_weibo_oauth')->oauth2_login()) {
                 H::redirect_msg($this->model('openid_weibo_oauth')->error_msg, '/account/login/');
             }
             $weibo_user_info = $this->model('openid_weibo_oauth')->user_info;
         }
         if (!$weibo_user_info) {
             H::redirect_msg(AWS_APP::lang()->_t('微博登录失败,用户信息不存在'), '/account/login/');
         }
         $weibo_user = $this->model('openid_weibo_oauth')->get_weibo_user_by_id($weibo_user_info['id']);
         if ($this->user_id) {
             if ($weibo_user) {
                 H::redirect_msg(AWS_APP::lang()->_t('此微博账号已被绑定'), '/account/login/');
             }
             $this->model('openid_weibo_oauth')->bind_account($weibo_user_info, $this->user_id);
             if (!$this->model('integral')->fetch_log($this->user_id, 'BIND_OPENID')) {
                 $this->model('integral')->process($this->user_id, 'BIND_OPENID', round(get_setting('integral_system_config_profile') * 0.2), '绑定 OPEN ID');
             }
             HTTP::redirect('/account/setting/openid/');
         } else {
             if ($weibo_user) {
                 $user = $this->model('account')->get_user_info_by_uid($weibo_user['uid']);
                 if (!$user) {
                     $this->model('openid_weibo_oauth')->unbind_account($weibo_user['uid']);
                     H::redirect_msg(AWS_APP::lang()->_t('本地用户不存在'), '/account/login/');
                 }
                 $this->model('openid_weibo_oauth')->update_user_info($weibo_user['id'], $weibo_user_info);
                 if (get_setting('register_valid_type') == 'approval' and $user['group_id'] == 3) {
                     $redirect_url = '/account/valid_approval/';
                 } else {
                     if ($_GET['state']) {
                         $state = base64_url_decode($_GET['state']);
                     }
                     if (get_setting('ucenter_enabled') == 'Y') {
                         $redirect_url = '/account/sync_login/';
                         if ($state['return_url']) {
                             $redirect_url .= 'url-' . base64_encode($state['return_url']);
                         }
                     } else {
                         if ($state['return_url']) {
                             $redirect_url = $state['return_url'];
                         } else {
                             $redirect_url = '/';
                         }
                     }
                     HTTP::set_cookie('_user_login', get_login_cookie_hash($user['user_name'], $user['password'], $user['salt'], $user['uid'], false));
                     if (get_setting('register_valid_type') == 'email' and !$user['valid_email']) {
                         AWS_APP::session()->valid_email = $user['email'];
                     }
                 }
                 HTTP::redirect($redirect_url);
             } else {
                 switch (get_setting('register_type')) {
                     case 'close':
                         H::redirect_msg(AWS_APP::lang()->_t('本站目前关闭注册'), '/account/login/');
                         break;
                     case 'invite':
                         H::redirect_msg(AWS_APP::lang()->_t('本站只能通过邀请注册'), '/account/login/');
                         break;
                     case 'weixin':
                         H::redirect_msg(AWS_APP::lang()->_t('本站只能通过微信注册'), '/account/login/');
                         break;
                 }
                 AWS_APP::session()->weibo_user = $weibo_user_info;
                 $this->crumb(AWS_APP::lang()->_t('完善资料'), '/account/login/');
                 TPL::assign('register_url', 'account/ajax/weibo/register/');
                 $user_name = str_replace('-', '', AWS_APP::session()->weibo_user['screen_name']);
                 while ($this->model('account')->check_username($user_name) || !$this->model('account')->is_valid_username($user_name) || $this->model('account')->check_username_sensitive_words($user_name)) {
                     $user_name = $this->model('account')->random_username();
                 }
                 TPL::assign('user_name', $user_name);
                 TPL::assign('sns_type', 'weibo');
                 TPL::import_css('css/register.css');
                 TPL::output('account/openid/callback');
             }
         }
     } else {
         $state = $_GET['return_url'] ? base64_url_encode(array('return_url' => base64_decode($_GET['return_url']))) : null;
         HTTP::redirect($this->model('openid_weibo_oauth')->get_redirect_url('/account/openid/weibo/bind/', $state));
     }
 }
コード例 #5
0
ファイル: weixin.php プロジェクト: Vizards/HeavenSpree
 public function register_action()
 {
     if ($_GET['code'] and get_setting('weixin_app_id')) {
         if (!($access_token = $this->model('openid_weixin_weixin')->get_sns_access_token_by_authorization_code($_GET['code']))) {
             H::redirect_msg('远程服务器忙,请稍后再试, Code: ' . htmlspecialchars($_GET['code']));
         }
         if ($access_token['errcode']) {
             H::redirect_msg('授权失败: Register ' . $access_token['errcode'] . ' ' . $access_token['errmsg'] . ', Code: ' . htmlspecialchars($_GET['code']));
         }
         if (!($access_user = $this->model('openid_weixin_weixin')->get_user_info_by_oauth_openid($access_token['access_token'], $access_token['openid']))) {
             H::redirect_msg('远程服务器忙,请稍后再试, Code: get_user_info');
         }
         if ($access_user['errcode']) {
             H::redirect_msg('获取用户信息失败: ' . $access_user['errcode'] . ' ' . $access_user['errmsg']);
         }
         if (!$access_user['nickname']) {
             H::redirect_msg(AWS_APP::lang()->_t('获取用户信息失败'));
         }
         if ($weixin_user = $this->model('openid_weixin_weixin')->get_user_info_by_openid($access_token['openid'])) {
             $user_info = $this->model('account')->get_user_info_by_uid($weixin_user['uid']);
             HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false));
             if ($_GET['redirect']) {
                 HTTP::redirect(base64_decode($_GET['redirect']));
             }
         }
         if ($user_info = $this->model('openid_weixin_weixin')->weixin_auto_register($access_token, $access_user)) {
             if ($_GET['redirect']) {
                 HTTP::redirect(base64_decode($_GET['redirect']));
             } else {
                 H::redirect_msg(AWS_APP::lang()->_t('绑定微信成功'), '/m/');
             }
         } else {
             H::redirect_msg(AWS_APP::lang()->_t('注册失败,请返回重新操作'));
         }
     } else {
         H::redirect_msg('授权失败, 请返回重新操作, URI: ' . $_SERVER['REQUEST_URI']);
     }
 }
コード例 #6
0
ファイル: uc.php プロジェクト: saintho/wecenter
 function synlogin($get, $post)
 {
     if (!API_SYNLOGIN) {
         return API_RETURN_FORBIDDEN;
     }
     header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
     $cookietime = time() + 31536000;
     $uid = intval($get['uid']);
     if ($uc_info = $this->db->fetchRow("SELECT * FROM {$this->tablepre}users_ucenter WHERE uc_uid = " . $uid)) {
         if ($user_info = $this->db->fetchRow("SELECT * FROM {$this->tablepre}users WHERE uid = " . $uc_info['uid'])) {
             HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false), $cookietime);
         }
     }
 }
コード例 #7
0
ファイル: google.php プロジェクト: egogg/wecenter-dev
 public function register_action()
 {
     if ($this->user_id) {
         H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('您已登录')));
     }
     switch (get_setting('register_type')) {
         case 'close':
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站目前关闭注册')));
             break;
         case 'invite':
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站只能通过邀请注册')));
             break;
         case 'weixin':
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站只能通过微信注册')));
             break;
     }
     if (!AWS_APP::session()->google_user) {
         H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('Google 账号信息不存在')));
     }
     if ($this->model('openid_google')->get_google_user_by_id(AWS_APP::session()->google_user['id'])) {
         H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('此 Google 账号已被绑定')));
     }
     if ($this->model('account')->check_email($_POST['email'])) {
         H::ajax_json_output(AWS_APP::RSM(array('input' => 'email'), -1, AWS_APP::lang()->_t('E-Mail 已经被使用, 或格式不正确')));
     }
     if (strlen($_POST['password']) < 6 or strlen($_POST['password']) > 16) {
         H::ajax_json_output(AWS_APP::RSM(array('input' => 'userPassword'), -1, AWS_APP::lang()->_t('密码长度不符合规则')));
     }
     if (!$_POST['agreement_chk']) {
         H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('你必需同意用户协议才能继续')));
     }
     if (get_setting('ucenter_enabled') == 'Y') {
         $result = $this->model('ucenter')->register($_POST['user_name'], $_POST['password'], $_POST['email']);
         if (!is_array($result)) {
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('UCenter 同步失败,错误为:%s', $result)));
         }
         $uid = $result['user_info']['uid'];
         $redirect_url = '/account/sync_login/';
     } else {
         $uid = $this->model('account')->user_register($_POST['user_name'], $_POST['password'], $_POST['email']);
         if (get_setting('register_valid_type') != 'approval') {
             $this->model('active')->active_user_by_uid($uid);
         }
         if (AWS_APP::session()->google_user['email'] == $_POST['email'] and AWS_APP::session()->google_user['verified_email'] == true) {
             $this->model('active')->set_user_email_valid_by_uid($uid);
         } else {
             if (get_setting('register_valid_type') == 'email') {
                 $this->model('active')->new_valid_email($uid);
             }
         }
         $redirect_url = '/';
     }
     if (!$uid) {
         H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('注册失败')));
     }
     $this->model('openid_google')->bind_account(AWS_APP::session()->google_user, $uid);
     if (AWS_APP::session()->google_user['picture']) {
         $this->model('account')->associate_remote_avatar($uid, AWS_APP::session()->google_user['picture']);
     }
     if (get_setting('register_valid_type') == 'approval') {
         $redirect_url = '/account/valid_approval/';
     } else {
         $user_info = $this->model('account')->get_user_info_by_uid($uid);
         HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false));
         if (get_setting('register_valid_type') == 'email') {
             AWS_APP::session()->valid_email = $user_info['email'];
         }
     }
     unset(AWS_APP::session()->google_user);
     H::ajax_json_output(AWS_APP::RSM(array('url' => get_js_url($redirect_url)), 1, null));
 }
コード例 #8
0
ファイル: twitter.php プロジェクト: Vizards/HeavenSpree
 public function bind_action()
 {
     if (AWS_APP::session()->twitter_request_token) {
         $twitter_request_token = AWS_APP::session()->twitter_request_token;
         unset(AWS_APP::session()->twitter_request_token);
     }
     if (AWS_APP::session()->twitter_user) {
         $twitter_user_info = AWS_APP::session()->twitter_user;
         unset(AWS_APP::session()->twitter_user);
     }
     if ($_GET['denied']) {
         H::redirect_msg(AWS_APP::lang()->_t('授权失败'), '/account/login/');
     }
     if ($this->user_id) {
         $twitter_user = $this->model('openid_twitter')->get_twitter_user_by_uid($this->user_id);
         if ($twitter_user) {
             H::redirect_msg(AWS_APP::lang()->_t('此账号已绑定 Twitter 账号'), '/account/login/');
         }
     }
     if ($_GET['oauth_token']) {
         if (!$twitter_user_info) {
             if ($_GET['oauth_token'] != $twitter_request_token['oauth_token']) {
                 H::redirect_msg(AWS_APP::lang()->_t('oauth token 不一致'), '/account/login/');
             }
             if (!$_GET['oauth_verifier']) {
                 H::redirect_msg(AWS_APP::lang()->_t('oauth verifier 为空'), '/account/login/');
             }
             $this->model('openid_twitter')->request_token = $twitter_request_token;
             $this->model('openid_twitter')->request_token['oauth_verifier'] = $_GET['oauth_verifier'];
             if (!$this->model('openid_twitter')->get_user_info()) {
                 H::redirect_msg($this->model('openid_twitter')->error_msg, '/account/login/');
             }
             $twitter_user_info = $this->model('openid_twitter')->user_info;
         }
         if (!$twitter_user_info) {
             H::redirect_msg(AWS_APP::lang()->_t('Twitter 登录失败,用户信息不存在'), '/account/login/');
         }
         $twitter_user = $this->model('openid_twitter')->get_twitter_user_by_id($twitter_user_info['id']);
         if ($this->user_id) {
             if ($twitter_user) {
                 H::redirect_msg(AWS_APP::lang()->_t('此 Twitter 账号已被绑定'), '/account/login/');
             }
             $this->model('openid_twitter')->bind_account($twitter_user_info, $this->user_id);
             if (!$this->model('integral')->fetch_log($this->user_id, 'BIND_OPENID')) {
                 $this->model('integral')->process($this->user_id, 'BIND_OPENID', round(get_setting('integral_system_config_profile') * 0.2), '绑定 OPEN ID');
             }
             HTTP::redirect('/account/setting/openid/');
         } else {
             if ($twitter_user) {
                 $user = $this->model('account')->get_user_info_by_uid($twitter_user['uid']);
                 if (!$user) {
                     $this->model('openid_twitter')->unbind_account($twitter_user['uid']);
                     H::redirect_msg(AWS_APP::lang()->_t('本地用户不存在'), '/account/login/');
                 }
                 $this->model('openid_twitter')->update_user_info($twitter_user['id'], $twitter_user_info);
                 if (get_setting('register_valid_type') == 'approval' and $user['group_id'] == 3) {
                     $redirect_url = '/account/valid_approval/';
                 } else {
                     if (get_setting('ucenter_enabled') == 'Y') {
                         $redirect_url = '/account/sync_login/';
                         if ($_GET['return_url']) {
                             $redirect_url .= 'url-' . $_GET['return_url'];
                         }
                     } else {
                         if ($state['return_url']) {
                             $redirect_url = $state['return_url'];
                         } else {
                             $redirect_url = '/';
                         }
                     }
                     HTTP::set_cookie('_user_login', get_login_cookie_hash($user['user_name'], $user['password'], $user['salt'], $user['uid'], false));
                     if (get_setting('register_valid_type') == 'email' and !$user['valid_email']) {
                         AWS_APP::session()->valid_email = $user['email'];
                     }
                 }
                 HTTP::redirect($redirect_url);
             } else {
                 switch (get_setting('register_type')) {
                     case 'close':
                         H::redirect_msg(AWS_APP::lang()->_t('本站目前关闭注册'), '/account/login/');
                         break;
                     case 'invite':
                         H::redirect_msg(AWS_APP::lang()->_t('本站只能通过邀请注册'), '/account/login/');
                         break;
                     case 'weixin':
                         H::redirect_msg(AWS_APP::lang()->_t('本站只能通过微信注册'), '/account/login/');
                         break;
                 }
                 AWS_APP::session()->twitter_user = $twitter_user_info;
                 $this->crumb(AWS_APP::lang()->_t('完善资料'), '/account/login/');
                 TPL::assign('register_url', '/account/ajax/twitter/register/');
                 TPL::assign('user_name', AWS_APP::session()->twitter_user['name']);
                 TPL::import_css('css/register.css');
                 TPL::output('account/openid/callback');
             }
         }
     } else {
         $this->model('openid_twitter')->oauth_callback = '/account/openid/twitter/bind/';
         if ($_GET['return_url']) {
             $this->model('openid_twitter')->oauth_callback .= 'return_url-' . $_GET['return_url'];
         }
         if (!$this->model('openid_twitter')->oauth_redirect()) {
             H::redirect_msg($this->model('openid_twitter')->error_msg, '/account/login/');
         }
         AWS_APP::session()->twitter_request_token = $this->model('openid_twitter')->request_token;
         HTTP::redirect($this->model('openid_twitter')->redirect_url);
     }
 }
コード例 #9
0
ファイル: openid.php プロジェクト: chenruixuan/wecenter
 public function qq_login_callback_action()
 {
     if ($this->is_post() and AWS_APP::session()->qq_profile and AWS_APP::session()->QQConnect) {
         if (get_setting('register_type') == 'close') {
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站目前关闭注册')));
         } else {
             if (get_setting('register_type') == 'invite') {
                 H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站只能通过邀请注册')));
             } else {
                 if (get_setting('register_type') == 'weixin') {
                     H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('本站只能通过微信注册')));
                 }
             }
         }
         if (trim($_POST['user_name']) == '') {
             H::ajax_json_output(AWS_APP::RSM(array('input' => 'user_name'), -1, AWS_APP::lang()->_t('请输入真实姓名')));
         } else {
             if ($this->model('account')->check_username($_POST['user_name'])) {
                 H::ajax_json_output(AWS_APP::RSM(array('input' => 'user_name'), -1, AWS_APP::lang()->_t('真实姓名已经存在')));
             } else {
                 if ($check_rs = $this->model('account')->check_username_char($_POST['user_name'])) {
                     H::ajax_json_output(AWS_APP::RSM(array('input' => 'user_name'), -1, $check_rs));
                 } else {
                     if ($this->model('account')->check_username_sensitive_words($_POST['user_name'])) {
                         H::ajax_json_output(AWS_APP::RSM(array('input' => 'user_name'), -1, AWS_APP::lang()->_t('真实姓名中包含敏感词或系统保留字')));
                     }
                 }
             }
         }
         if ($this->model('account')->check_email($_POST['email'])) {
             H::ajax_json_output(AWS_APP::RSM(array('input' => 'email'), -1, AWS_APP::lang()->_t('E-Mail 已经被使用, 或格式不正确')));
         }
         if (strlen($_POST['password']) < 6 or strlen($_POST['password']) > 16) {
             H::ajax_json_output(AWS_APP::RSM(array('input' => 'userPassword'), -1, AWS_APP::lang()->_t('密码长度不符合规则')));
         }
         if (!$_POST['agreement_chk']) {
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('你必需同意用户协议才能继续')));
         }
         if (get_setting('ucenter_enabled') == 'Y') {
             $result = $this->model('ucenter')->register($_POST['user_name'], $_POST['password'], $_POST['email'], true);
             if (is_array($result)) {
                 $uid = $result['user_info']['uid'];
             } else {
                 H::ajax_json_output(AWS_APP::RSM(null, -1, $result));
             }
         } else {
             $uid = $this->model('account')->user_register($_POST['user_name'], $_POST['password'], $_POST['email']);
             if (get_setting('register_valid_type') == 'email') {
                 $this->model('active')->new_valid_email($uid);
             }
             if (get_setting('register_valid_type') != 'approval') {
                 $this->model('active')->active_user_by_uid($uid);
             }
         }
         if ($uid) {
             $this->model('openid_qq')->bind_account(AWS_APP::session()->qq_profile, null, $uid, true);
             if (AWS_APP::session()->qq_profile['figureurl_2']) {
                 $this->model('account')->associate_remote_avatar($uid, AWS_APP::session()->qq_profile['figureurl_2']);
             }
             H::ajax_json_output(AWS_APP::RSM(null, 1, null));
         } else {
             H::ajax_json_output(AWS_APP::RSM(null, -1, AWS_APP::lang()->_t('与 QQ 通信出错 (Register), 请重新登录')));
         }
     } else {
         if (!$_GET['code']) {
             H::redirect_msg(AWS_APP::lang()->_t('与 QQ 通信出错, 请重新登录'), "/account/login/");
         }
         if (!AWS_APP::session()->QQConnect['access_token']) {
             if (!$this->model('openid_qq')->request_access_token(get_js_url('/account/openid/qq_login_callback/'))) {
                 H::redirect_msg(AWS_APP::lang()->_t('与 QQ 通信出错, 请重新登录'), "/account/login/");
             }
         }
         if (!AWS_APP::session()->QQConnect['access_token'] or !($uinfo = $this->model('openid_qq')->request_user_info())) {
             H::redirect_msg(AWS_APP::lang()->_t('与 QQ 通信出错, 请重新登录'), "/account/login/");
         }
         AWS_APP::session()->qq_profile = $uinfo;
         if ($qq_user = $this->model('openid_qq')->get_user_info_by_open_id(load_class('Services_Tencent_QQConnect_V2')->get_openid())) {
             $user_info = $this->model('account')->get_user_info_by_uid($qq_user['uid']);
             HTTP::set_cookie('_user_login', get_login_cookie_hash($user_info['user_name'], $user_info['password'], $user_info['salt'], $user_info['uid'], false));
             $this->model('openid_qq')->update_token($qq_user['name'], AWS_APP::session()->QQConnect['access_token']);
             HTTP::redirect('/');
         } else {
             if ($this->user_id) {
                 $this->model('openid_qq')->bind_account($this->model('openid_qq')->request_user_info(), '/', $this->user_id);
             } else {
                 if (get_setting('register_type') == 'close') {
                     H::redirect_msg(AWS_APP::lang()->_t('本站目前关闭注册'));
                 } else {
                     if (get_setting('register_type') == 'invite') {
                         H::redirect_msg(AWS_APP::lang()->_t('本站只能通过邀请注册'));
                     } else {
                         $this->crumb(AWS_APP::lang()->_t('完善资料'), '/account/login/');
                         TPL::assign('user_name', str_replace(' ', '_', AWS_APP::session()->qq_profile['nickname']));
                         TPL::import_css('css/register.css');
                         TPL::output('account/openid/callback');
                     }
                 }
             }
         }
     }
 }