public function logout()
 {
     //调用退出登录的API
     D('Member')->logout();
     $html = '';
     if (UC_SYNC && is_login() != 1) {
         // include_once './api/uc_client/client.php';
         $Ucenter = new \Common\Model\UcenterModel();
         $html = $Ucenter->uc_user_synlogout();
     }
     $oc_config = (include_once './OcApi/oc_config.php');
     if ($oc_config['SSO_SWITCH']) {
         include_once './OcApi/OCenter/OCenter.php';
         $OCApi = new \OCApi();
         $html .= $OCApi->ocSynLogout();
     }
     exit(json_encode(array('message' => '退出登陆成功。', 'url' => U('Home/Index/index'), 'html' => $html)));
     //显示页面
     //$this->success($result['message'], U('Home/Index/index'));
 }
Beispiel #2
0
 public function doLogin()
 {
     $aUsername = $username = I('post.username', '', 'op_t');
     $aPassword = I('post.password', '', 'op_t');
     $aVerify = I('post.verify', '', 'op_t');
     $aRemember = I('post.remember', 0, 'intval');
     /* 检测验证码 */
     if (check_verify_open('login')) {
         if (!check_verify($aVerify)) {
             $res['info'] = "验证码输入错误。";
             return $res;
         }
     }
     /* 调用UC登录接口登录 */
     check_username($aUsername, $email, $mobile, $aUnType);
     if (!check_reg_type($aUnType)) {
         $res['info'] = "该类型未开放登录。";
     }
     $uid = UCenterMember()->login($username, $aPassword, $aUnType);
     if (0 < $uid) {
         //UC登录成功
         /* 登录用户 */
         $Member = D('Common/Member');
         $args['uid'] = $uid;
         $args = array('uid' => $uid, 'nickname' => $username);
         check_and_add($args);
         if ($Member->login($uid, $aRemember == 1)) {
             //登录用户
             //TODO:跳转到登录前页面
             if (UC_SYNC && $uid != 1) {
                 //同步登录到UCenter
                 $ref = M('ucenter_user_link')->where(array('uid' => $uid))->find();
                 $html = '';
                 $Ucenter = new \Common\Model\UcenterModel();
                 list($uid, $username, $password, $email) = $Ucenter->uc_user_login($username, $aPassword);
                 $html = $Ucenter->uc_user_synlogin($uid);
                 if ($uid > 0) {
                     $res['tips'] = '登录成功';
                 } elseif ($uid == -1) {
                     $res['tips'] = '用户不存在,或者被删除';
                 } elseif ($uid == -2) {
                     $res['tips'] = '密码错';
                 } else {
                     $res['tips'] = '未定义';
                 }
             }
             $oc_config = (include_once './OcApi/oc_config.php');
             if ($oc_config['SSO_SWITCH']) {
                 include_once './OcApi/OCenter/OCenter.php';
                 $OCApi = new \OCApi();
                 $html .= $OCApi->ocSynLogin($uid);
             }
             $res['status'] = 1;
             $res['info'] = $html;
             //$this->success($html, get_nav_url(C('AFTER_LOGIN_JUMP_URL')));
         } else {
             $res['info'] = $Member->getError();
         }
     } else {
         //登录失败
         switch ($uid) {
             case -1:
                 $res['info'] = '用户不存在或被禁用!';
                 break;
                 //系统级别禁用
             //系统级别禁用
             case -2:
                 $res['info'] = '密码错误!';
                 break;
             default:
                 $res['info'] = $uid;
                 break;
                 // 0-接口参数错误(调试阶段使用)
         }
     }
     return $res;
 }
 public function ucmailLogin($username, $password)
 {
     // include_once './api/uc_client/client.php';
     //Ucenter 内数据
     $Ucenter = new \Common\Model\UcenterModel();
     $uc_user = $Ucenter->uc_user_login($username, $password);
     //第三个参数加不加无所谓方法中自动判断
     //关联表内数据
     $uc_user_ref = tox_get_ucenter_user_ref('', $uc_user['0'], '');
     //根据ucenter表中的uid找关联表中有没有数据
     //检测关联表数据完整度
     if ($uc_user_ref['uid'] && $uc_user_ref['uc_uid'] && $uc_user[0] > 0) {
         return $uc_user_ref['uid'];
         //关联表有完整关联的uctoo数据就返回本地uid不用后续注册过程
     }
     //本地帐号信息
     $tox_user = $this->getLocal_byEmail($username, $password);
     // 关联表无、UC有、本地无的
     if ($uc_user[0] > 0 && !$tox_user['id']) {
         $uid = $this->register($uc_user[1], $uc_user[1], $uc_user[2], $uc_user[3], '', 2);
         if ($uid <= 0) {
             return A('Home/User')->showRegError($uid);
         }
         $result = tox_add_ucenter_user_ref($uid, $uc_user[0], $uc_user[1], $uc_user[3]);
         if (!$result) {
             return '用户不存在或密码错误';
         }
         return $uid;
     }
     // 关联表无、UC有、本地有的
     if ($uc_user[0] > 0 && $tox_user['id'] > 0) {
         $result = tox_add_ucenter_user_ref($tox_user['id'], $uc_user[0], $uc_user[1], $uc_user[3]);
         if (!$result) {
             return '用户不存在或密码错误';
         }
         return $tox_user['id'];
     }
     // 关联表无、UC无、本地有
     if ($uc_user[0] < 0 && $tox_user['id'] > 0) {
         //写入UC
         if (empty($tox_user['username'])) {
             //如果uctoo帐号是用email注册的初始用户名会为空,注册ucenter时默认用邮箱@之前的部分做用户名
             $tox_user['username'] = strstr($tox_user['email'], '@', TRUE);
         }
         $uc_uid = $Ucenter->uc_user_register($tox_user['username'], $password, $tox_user['email'], '', '', get_client_ip());
         if ($uc_uid <= 0) {
             return 'UC帐号注册失败,请联系管理员';
         }
         //写入关联表
         if (M('ucenter_user_link')->where(array('uid' => $tox_user['id']))->find()) {
             $result = tox_update_ucenter_user_ref($tox_user['id'], $uc_uid, $tox_user['username'], $tox_user['email']);
         } else {
             $result = tox_add_ucenter_user_ref($tox_user['id'], $uc_uid, $tox_user['username'], $tox_user['email']);
         }
         if (!$result) {
             return '用户不存在或密码错误';
         }
         return $tox_user['id'];
     }
     //关联表无、UC无、本地无的
     return '密码错误或用户不存在';
 }