67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | // NOTE: We aren't using PhabricatorUserOAuthInfo anywhere here because it is
 | ||
|  | // getting nuked in a future diff.
 | ||
|  | 
 | ||
|  | $table = new PhabricatorUser(); | ||
|  | $table_name = 'user_oauthinfo'; | ||
|  | $conn_w = $table->establishConnection('w'); | ||
|  | 
 | ||
|  | $xaccount = new PhabricatorExternalAccount(); | ||
|  | 
 | ||
|  | echo "Migrating OAuth to ExternalAccount...\n"; | ||
|  | 
 | ||
|  | $domain_map = array( | ||
|  |   'disqus'      => 'disqus.com', | ||
|  |   'facebook'    => 'facebook.com', | ||
|  |   'github'      => 'github.com', | ||
|  |   'google'      => 'google.com', | ||
|  | ); | ||
|  | 
 | ||
|  | try { | ||
|  |   $phabricator_oauth_uri = new PhutilURI( | ||
|  |     PhabricatorEnv::getEnvConfig('phabricator.oauth-uri')); | ||
|  |   $domain_map['phabricator'] = $phabricator_oauth_uri->getDomain(); | ||
|  | } catch (Exception $ex) { | ||
|  |   // Ignore; this likely indicates that we have removed `phabricator.oauth-uri`
 | ||
|  |   // in some future diff.
 | ||
|  | } | ||
|  | 
 | ||
|  | $rows = queryfx_all( | ||
|  |   $conn_w, | ||
|  |   'SELECT * FROM user_oauthinfo'); | ||
|  | foreach ($rows as $row) { | ||
|  |   echo "Migrating row ID #".$row['id'].".\n"; | ||
|  |   $user = id(new PhabricatorUser())->loadOneWhere( | ||
|  |     'id = %d', | ||
|  |     $row['userID']); | ||
|  |   if (!$user) { | ||
|  |     echo "Bad user ID!\n"; | ||
|  |     continue; | ||
|  |   } | ||
|  | 
 | ||
|  |   $domain = idx($domain_map, $row['oauthProvider']); | ||
|  |   if (empty($domain)) { | ||
|  |     echo "Unknown OAuth provider!\n"; | ||
|  |     continue; | ||
|  |   } | ||
|  | 
 | ||
|  | 
 | ||
|  |   $xaccount = id(new PhabricatorExternalAccount()) | ||
|  |     ->setUserPHID($user->getPHID()) | ||
|  |     ->setAccountType($row['oauthProvider']) | ||
|  |     ->setAccountDomain($domain) | ||
|  |     ->setAccountID($row['oauthUID']) | ||
|  |     ->setAccountURI($row['accountURI']) | ||
|  |     ->setUsername($row['accountName']) | ||
|  |     ->setDateCreated($row['dateCreated']); | ||
|  | 
 | ||
|  |   try { | ||
|  |     $xaccount->save(); | ||
|  |   } catch (Exception $ex) { | ||
|  |     phlog($ex); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | echo "Done.\n"; |