Cicalese has uploaded a new change for review.

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

Change subject: Fixed whitelist issue for non-English wikis.
......................................................................

Fixed whitelist issue for non-English wikis.

Change-Id: I77fe4d8c66df632b8a9c647ab3e69ac7f2fb86be
---
M PluggableAuthHooks.php
M ext.PluggableAuthAutoLogin.js
M extension.json
3 files changed, 44 insertions(+), 65 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/PluggableAuth 
refs/changes/02/315502/1

diff --git a/PluggableAuthHooks.php b/PluggableAuthHooks.php
index cccd09d..9fc09f8 100644
--- a/PluggableAuthHooks.php
+++ b/PluggableAuthHooks.php
@@ -25,17 +25,17 @@
 class PluggableAuthHooks {
 
        /**
-        * Implements extension registration callback.
-        * See 
https://www.mediawiki.org/wiki/Manual:Extension_registration#Customizing_registration
+        * Implements extension function.
+        * See https://www.mediawiki.org/wiki/Manual:$wgExtensionFunctions
+        * Adds localized name of PluggableAuthLogin special page to whitelist.
+        * Removes password providers if local login is not enabled.
         *
         * @since 2.0
         *
         */
-       public static function onRegistration() {
-               if ( !$GLOBALS['wgWhitelistRead'] ) {
-                       $GLOBALS['wgWhitelistRead'] = [];
-               }
-               $GLOBALS['wgWhitelistRead'][] = 'Special:PluggableAuthLogin';
+       public static function extensionFunction() {
+               $title = Title::newFromText( 'PluggableAuthLogin', NS_SPECIAL );
+               $GLOBALS['wgWhitelistRead'][] = $title->getPrefixedText();
                if ( $GLOBALS['wgPluggableAuth_EnableLocalLogin'] ) {
                        return;
                }
@@ -58,6 +58,7 @@
         *
         * Implements AuthChangeFormFields hook.
         * See https://www.mediawiki.org/wiki/Manual:Hooks/AuthChangeFormFields
+        * Moves login button to bottom of form.
         *
         * @since 2.0
         *
@@ -76,6 +77,7 @@
        /**
         * Implements UserLogoutComplete hook.
         * See https://www.mediawiki.org/wiki/Manual:Hooks/UserLogoutComplete
+        * Calls deauthenticate hook in authentication plugin.
         *
         * @since 2.0
         *
@@ -100,6 +102,8 @@
 
        /**
         * Implements BeforePageDisplay hook.
+        * Adds auto login JavaScript module if auto login is enabled, no user 
is
+        * logged in, and the current page is not whitelisted.
         *
         * @since 2.0
         *
@@ -107,7 +111,13 @@
         * @param Skin $skin
         */
        public static function autoLoginInit( &$out, &$skin ) {
-               if ( $GLOBALS['wgPluggableAuth_EnableAutoLogin'] ) {
+               if ( $GLOBALS['wgPluggableAuth_EnableAutoLogin'] &&
+                       $out->getUser()->isAnon() ) {
+                       $page = $out->getTitle()->getPrefixedText();
+                       $whitelist = $GLOBALS['wgWhitelistRead'];
+                       if ( in_array( $page, $whitelist ) ) {
+                               return true;
+                       }
                        $out->addModules( 'ext.PluggableAuthAutoLogin' );
                }
                return true;
@@ -116,6 +126,7 @@
        /**
         * Implements PersonalUrls hook.
         * See https://www.mediawiki.org/wiki/Manual:Hooks/PersonalUrls
+        * Removes logout link from skin if auto login is enabled.
         *
         * @since 1.0
         *
@@ -129,17 +140,5 @@
                        unset( $personal_urls['logout'] );
                }
                return true;
-       }
-
-       /**
-        * Implements ResourceLoaderGetConfigVars hook.
-        * See 
https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderGetConfigVars
-        *
-        * @since 2.0
-        *
-        * @param array &$vars
-        */
-       public static function onResourceLoaderGetConfigVars( array &$vars ) {
-               $vars['wgWhitelistRead'] = $GLOBALS['wgWhitelistRead'];
        }
 }
diff --git a/ext.PluggableAuthAutoLogin.js b/ext.PluggableAuthAutoLogin.js
index cf5f12c..990c78f 100644
--- a/ext.PluggableAuthAutoLogin.js
+++ b/ext.PluggableAuthAutoLogin.js
@@ -21,56 +21,35 @@
  */
 
 ( function ( mw ) {
-       // Are we already logged in?
-       if ( mw.config.get( 'wgUserName' ) !== null ) {
-               return;
-       }
-
-       var pageName = mw.config.get( 'wgPageName' );
-       var namespace = mw.config.get( 'wgCanonicalNamespace' );
-       if ( namespace === 'Special' ) {
-               var specialPageName = mw.config.get( 
'wgCanonicalSpecialPageName' );
-               if ( specialPageName === 'Userlogin' || pageName === 
'Special:UserLogin' ) {
-                       return;
-               } else if ( specialPageName === 'Badtitle' || pageName === 
'Special:Badtitle' ) {
-                       pageName = null;
-               } else {
-                       pageName = namespace + ':' + specialPageName;
-               }
-       }
-
-       // Is this page whitelisted?
-       var whitelist = mw.config.get( 'wgWhitelistRead' );
-       for ( i = 0; i < whitelist.length; i++ ) {
-               if ( whitelist[i] === pageName ) {
-                       return;
-               }
-       }
-
-       // Redirect to Special:UserLogin
        mw.loader.using( [ 'mediawiki.Uri', 'mediawiki.Title' ], function () {
+               var pageName = mw.config.get( 'wgPageName' );
                var uri = new mw.Uri();
-               if ( pageName === null ) {
-                       if ( uri.query.title === undefined ) {
-                               var articlePath = mw.config.get( 
'wgArticlePath' );
-                               articlePath = articlePath.replace( '$1', '(.*)' 
);
-                               var re = new RegExp( articlePath );
-                               var path = uri.path;
-                               var matches = path.match( re );
-                               if ( matches.length > 1 ) {
-                                       pageName = matches[1];
+               if ( mw.config.get( 'wgCanonicalNamespace' ) === 'Special' ) {
+                       var specialPageName = mw.config.get( 
'wgCanonicalSpecialPageName' );
+                       if ( specialPageName === 'Userlogin' ) {
+                               return;
+                       } else if ( specialPageName === 'Badtitle' ) {
+                               if ( uri.query.title === undefined ) {
+                                       var articlePath = mw.config.get( 
'wgArticlePath' );
+                                       articlePath = articlePath.replace( 
'$1', '(.*)' );
+                                       var re = new RegExp( articlePath );
+                                       var path = uri.path;
+                                       var matches = path.match( re );
+                                       if ( matches.length > 1 ) {
+                                               pageName = matches[1];
+                                       } else {
+                                               pageName = mw.config.get( 
'wgMainPageName' );
+                                       }
                                } else {
-                                       pageName = mw.config.get( 
'wgMainPageName' );
+                                       pageName = uri.query.title;
                                }
-                       } else {
-                               pageName = uri.query.title;
                        }
                }
                delete uri.query.title;
                var query = uri.getQueryString();
-               var loginPageName = "Special:Userlogin";
-               var loginUrl = new mw.Title( loginPageName ).getUrl(
-                       { returnto: pageName, returntoquery: query } );
+               var namespace = mw.config.get( 'wgNamespaceIds' ).special;
+               var title = mw.Title.makeTitle( namespace, 'Userlogin' );
+               var loginUrl = title.getUrl( { returnto: pageName, 
returntoquery: query } );
                window.location = loginUrl;
        } );
 }( mediaWiki ) );
diff --git a/extension.json b/extension.json
index 082b10c..23d15a5 100644
--- a/extension.json
+++ b/extension.json
@@ -39,13 +39,14 @@
                "localBasePath": "",
                "remoteExtPath": "PluggableAuth"
        },
-       "callback": "PluggableAuthHooks::onRegistration",
+       "ExtensionFunctions": [
+               "PluggableAuthHooks::extensionFunction"
+       ],
        "Hooks": {
                "UserLogoutComplete": "PluggableAuthHooks::deauthenticate",
                "AuthChangeFormFields": 
"PluggableAuthHooks::onAuthChangeFormFields",
                "BeforePageDisplay": "PluggableAuthHooks::autoLoginInit",
-               "PersonalUrls": "PluggableAuthHooks::modifyLoginURLs",
-               "ResourceLoaderGetConfigVars": 
"PluggableAuthHooks::onResourceLoaderGetConfigVars"
+               "PersonalUrls": "PluggableAuthHooks::modifyLoginURLs"
        },
        "AuthManagerAutoConfig": {
                "primaryauth": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I77fe4d8c66df632b8a9c647ab3e69ac7f2fb86be
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/PluggableAuth
Gerrit-Branch: master
Gerrit-Owner: Cicalese <cical...@mitre.org>

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

Reply via email to