CSteipp has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/91329


Change subject: Utility function to get central id from username
......................................................................

Utility function to get central id from username

Fixes TODO from gerrit 88251, SpecialMWOAuthListConsumers.php, so that
Special:MWOAuthListConsumers can be run on any wiki instead of the
central wiki only.

Change-Id: Ie17cacd68452ffea808d63b3d5b74078577c75be
---
M backend/MWOAuthUtils.php
1 file changed, 35 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/OAuth 
refs/changes/29/91329/1

diff --git a/backend/MWOAuthUtils.php b/backend/MWOAuthUtils.php
index 3417f73..3916cc4 100644
--- a/backend/MWOAuthUtils.php
+++ b/backend/MWOAuthUtils.php
@@ -404,6 +404,41 @@
        }
 
        /**
+        * Given a username, get the user ID for that user on the central wiki
+        *
+        * @param string $username
+        * @throws MWException
+        * @return integer|bool ID or false if not found
+        */
+       public static function getCentralIdFromUserName( $username ) {
+               global $wgMWOAuthCentralWiki, $wgMWOAuthSharedUserIDs, 
$wgMWOAuthSharedUserSource;
+
+               if ( $wgMWOAuthSharedUserIDs ) { // global ID required via hook
+                       if ( !Hooks::isRegistered( 
'OAuthGetCentralIdFromUserName' ) ) {
+                               throw new MWException( "No handler for 
'OAuthGetCentralIdFromLocalUser' hook" );
+                       }
+
+                       $id = null;
+                       // Let CentralAuth check that $user is attached to a 
global account and
+                       // that the foreign local account on the central wiki 
is also attached to it
+                       wfRunHooks( 'OAuthGetCentralIdFromUserName',
+                               array( $username, $wgMWOAuthCentralWiki, &$id, 
$wgMWOAuthSharedUserSource ) );
+                       // If there is no such user, the extension should set 
the ID to false
+                       if ( $id === null ) {
+                               $id = false;
+                       }
+               } else {
+                       $id = false;
+                       $user = User::newFromName( $username );
+                       if ( $user instanceof User && $user->getId() > 0 ) {
+                               $id = $user->getId();
+                       }
+               }
+
+               return $id;
+       }
+
+       /**
         * Get the effective secret key/token to use for OAuth purposes.
         *
         * For example, the "secret key" and "access secret" values that are

-- 
To view, visit https://gerrit.wikimedia.org/r/91329
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie17cacd68452ffea808d63b3d5b74078577c75be
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/OAuth
Gerrit-Branch: master
Gerrit-Owner: CSteipp <cste...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to