Ejemplo n.º 1
0
 public 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"');
     $uc_uid = $get['uid'];
     $uc_uname = uc_auto_charset($get['username']);
     $uc_password = $get['password'];
     $uc_user_ref = ts_get_ucenter_user_ref('', $uc_uid);
     $user = ts_get_user($uc_user_ref['uid']);
     if ($user) {
         //检查是否激活,未激活用户不自动登录
         if ($user['is_active'] == 0) {
             exit;
         }
         if ($uc_uname != $uc_user_ref['uc_username']) {
             ts_update_ucenter_user_ref($uc_user_ref['uid'], $uc_uid, $uc_uname);
         }
         //登录到TS系统
         $user['login_from_dz'] = true;
         $result = ts_synclogin($user);
     }
 }
 /**
  * uc登陆或者注册。返回数组
  * $result['user'] 用户信息。用于ts系统使用
  * $result['login'] 同步登陆是否成功
  * @param unknown_type $username
  * @param unknown_type $password
  */
 public function ucLogin($username, $password)
 {
     if (isValidEmail($username)) {
         $user = service('Passport')->getLocalUser($username, $password);
         if (UC_SYNC && $user['uid']) {
             $uc_user_ref = ts_get_ucenter_user_ref($user['uid']);
             if ($uc_user_ref['uc_uid']) {
                 $uc_user = uc_user_login($uc_user_ref['uc_uid'], $password, 1);
                 if ($uc_user[0] == -1 || $uc_user[0] == -2) {
                     $uc_user_ref = array();
                 }
             } else {
                 if ($user['uname']) {
                     $res_checkname = uc_user_checkname($user['uname']);
                     if ($res_checkname >= -3 && $res_checkname <= -1) {
                         $error_param = L('username');
                     }
                     $res_checkemail = uc_user_checkemail($username);
                     if ($res_checkemail >= -6 && $res_checkemail <= -4) {
                         $error_param = $error_param ? $error_param . L('and_email') : 'Email';
                     }
                     if ($error_param) {
                         $message_data['title'] = L('sync_ucenter') . $error_param . L('sign_in_failed');
                         $message_data['content'] = L('you_of_site') . $error_param . L('ucenter_sign_in_failed') . $error_param . L('ucenter_clash') . U('home/Account/security') . L('ucenter_reset') . $error_param . '。';
                         $message_data['to'] = $user['uid'];
                         model('Message')->postMessage($message_data, M('user')->getField('uid', 'admin_level=1'));
                     } else {
                         $uc_uid = uc_user_register($user['uname'], $password, $username);
                         ts_add_ucenter_user_ref($user['uid'], $uc_uid, $user['uname']);
                         $uc_user[0] = $uc_uid;
                     }
                 }
             }
         }
     } else {
         if (UC_SYNC) {
             $uc_user = uc_user_login($username, $password);
             if ($uc_user[0] > 0) {
                 $uc_user_ref = ts_get_ucenter_user_ref('', $uc_user[0]);
                 if (!$uc_user_ref) {
                     // 注册
                     if ($this->isValidEmail($uc_user['3']) && $this->isEmailAvailable($uc_user['3'])) {
                         $user['email'] = $uc_user['3'];
                     } else {
                         $message_data['title'] = L('ucenter_sync_email_clash');
                         $message_data['content'] = L('ucenter_email_used') . U('home/Account/bind') . L('ucenter_reset_email');
                     }
                     if (isLegalUsername($uc_user['1']) && !M('user')->where("uname='{$uc_user['1']}'")->count()) {
                         $user['uname'] = $uc_user['1'];
                     }
                     $user['password'] = md5($uc_user['2']);
                     $user['ctime'] = time();
                     $user['is_active'] = 1;
                     $user['uid'] = M('user')->add($user);
                     if ($user['uid']) {
                         $reg_from_ucenter = 1;
                         ts_add_ucenter_user_ref($user['uid'], $uc_user['0'], $uc_user['1']);
                         // 将用户添加到myop_userlog,以使漫游应用能获取到用户信息
                         $userlog = array('uid' => $user['uid'], 'action' => 'add', 'type' => '0', 'dateline' => time());
                         M('myop_userlog')->add($userlog);
                         if (isset($message_data) && !empty($message_data)) {
                             $message_data['to'] = $user['uid'];
                             model('Message')->postMessage($message_data, M('user')->getField('uid', 'admin_level=1'));
                         }
                         //关联操作
                         //$this->registerRelation($user['uid']);
                     } else {
                         $user = array();
                     }
                 } else {
                     if ($username != $uc_user_ref['uc_username']) {
                         ts_update_ucenter_user_ref('', $uc_user_ref['uc_uid'], $username);
                     }
                     $user = M('user')->where("uid={$uc_user_ref['uid']}")->find();
                     if (md5($password) != $user['password']) {
                         M('user')->where("uid={$uc_user_ref['uid']}")->setField('password', md5($password));
                     }
                 }
             }
         } else {
             $uc_user_ref = ts_get_ucenter_user_ref('', '', $username);
             if ($uc_user_ref['uid']) {
                 $user = service('Passport')->getLocalUser($uc_user_ref['uid'], $password);
             }
         }
     }
     $result['login'] = '';
     if ($user) {
         $result['login'] = UC_SYNC && $uc_user[0] ? uc_user_synlogin($uc_user[0]) : '';
     }
     $result['user'] = $user;
     $result['reg_from_ucenter'] = $reg_from_ucenter;
     return $result;
 }
Ejemplo n.º 3
0
 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"');
     $uc_uid = $get['uid'];
     $uc_uname = uc_auto_charset($get['username']);
     $uc_user_ref = ts_get_ucenter_user_ref('', $uc_uid);
     $user = M('user')->where("uid={$uc_user_ref['uid']}")->find();
     if ($user) {
         //检查是否激活,未激活用户不自动登录
         if ($user['is_active'] == 0) {
             exit;
         }
         if ($uc_uname != $uc_user_ref['uc_username']) {
             ts_update_ucenter_user_ref($uc_user_ref['uid'], $uc_uid, $uc_uname);
         }
         //登录到TS系统
         session_start();
         $result = service('Passport')->registerLogin($user);
         //由于UC登录没有发送记住登录的状态过来,所以暂时关闭此代码
         //成功登录后,设置Cookie
         //$remember ?
         //cookie('LOGGED_USER',jiami('thinksns.'.$user['uid']),(3600*24*365)) //:
         /*cookie('LOGGED_USER',jiami('thinksns.'.$user['uid']),(3600*2))*/
     }
 }