| 
					
				 | 
			
			
				@@ -20,6 +20,12 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	protected $session = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @desc passport 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @var object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	protected $passport = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * @desc request 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 * @var array 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,14 +41,21 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public function __construct() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		parent::__construct(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->initPassport(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initSave(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initRequest(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initAccount(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initSource(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->initSourceType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initRefer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->initConfig(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private function initPassport() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->passport = Dever::load('passport/lib/base'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private function initSave() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->session = new Save(DEVER_PROJECT, 'session'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,6 +72,18 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->session->add('oauth_account', $this->account); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private function initSystem() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->system = (isset($this->request['system']) && $this->request['system']) ? $this->request['system'] : $this->session->get('oauth_system'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->session->add('oauth_system', $this->system); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private function initSourceType() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->source_type = (isset($this->request['source_type']) && $this->request['source_type']) ? $this->request['source_type'] : $this->session->get('oauth_source_type'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$this->session->add('oauth_source_type', $this->source_type); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private function initSource() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		$this->source = (isset($this->request['source']) && $this->request['source']) ? $this->request['source'] : $this->session->get('oauth_source'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,9 +177,10 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (isset($this->config['token']['response'])) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				# 进入绑定流程吧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				$this->bind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return $this->bind(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Dever::alert('登录失败'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -202,11 +228,16 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			$id = $get['id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		$this->update($data, $id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$user = $this->update($data, $id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		# 跳转吧,从哪来去哪吧 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if ($this->refer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			$refer = urldecode($this->refer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			Dever::location($refer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			$result = $user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	        $result['uid'] = $user['id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	        $result['signature'] = Dever::login($user['id']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	        return $result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -262,6 +293,12 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!$uid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             	$user['source_type'] = 'service'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            	if ($this->system) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					$user['system_id'] = $this->system; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	            if ($this->source_type) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					$user['source_type'] = $this->source_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $uid = Dever::load('passport/user-insert', $user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $user['where_id'] = $uid; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -273,8 +310,17 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['expires_in'] = $data['expires_in']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['refresh_token'] = $data['refresh_token']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['account_id'] = $this->account; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ($this->system) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				$wechat['system_id'] = $this->system; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['uid'] = $uid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['type'] = 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ($this->source_type == 'ios') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            	$wechat['type'] = 3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } elseif ($this->source_type == 'android') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            	$wechat['type'] = 4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $id = Dever::load('passport/wechat-insert', $wechat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (Dever::project('source') && isset($this->source) && $this->source && $this->source > 0) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -284,6 +330,8 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $uid = $info['uid']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (isset($data['unionid']) && $data['unionid']) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $wechat['unionid'] = $data['unionid']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # 判断用户是否存在,是否需要合并 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $wechat['uid'] = $this->passport->combine($uid, $data['unionid']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['access_token'] = $data['access_token']; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -292,6 +340,9 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['refresh_token'] = $data['refresh_token']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['where_id'] = $info['id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $wechat['account_id'] = $this->account; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ($this->system) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            	$wechat['system_id'] = $this->system; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $id = $info['id']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dever::load('passport/wechat-update', $wechat); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,13 +350,13 @@ class Client extends Base 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dever::load('passport/user-update', $user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Dever::load('passport/api')->createUsername($uid, $user['username']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $this->passport->createUsername($uid, $user['username']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $user = Dever::load('passport/user-one', $uid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $this->save($user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return $uid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return $user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	/** 
			 |