jenkins-bot has submitted this change and it was merged.

Change subject: Autologin for m. domains
......................................................................


Autologin for m. domains

Have the central login wiki redirect to the mobile version of a wiki,
if the original autologin started on a mobile domain.

Depends on Ia90a587b0579ff2a65c9477f083692aab3945577

Bug: T100413
Change-Id: Ie1c373a1f039fb1ab9866543288bcfaf87c51ab4
---
M includes/CentralAuthHooks.php
M includes/specials/SpecialCentralAutoLogin.php
2 files changed, 55 insertions(+), 10 deletions(-)

Approvals:
  MaxSem: Looks good to me, but someone else must approve
  Jdlrobson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/CentralAuthHooks.php b/includes/CentralAuthHooks.php
index 692dd8c..42b239a 100644
--- a/includes/CentralAuthHooks.php
+++ b/includes/CentralAuthHooks.php
@@ -596,10 +596,17 @@
                        foreach ( $wgCentralAuthAutoLoginWikis as $alt => 
$wikiID ) {
                                $wiki = WikiMap::getWiki( $wikiID );
                                // Use WikiReference::getFullUrl(), returns a 
protocol-relative URL if needed
-                               $url = wfAppendQuery( $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ), array(
+                               $params = array(
                                        'type' => 'icon',
                                        'from' => wfWikiID(),
-                               ) );
+                               );
+                               if ( self::isMobileDomain() ) {
+                                       $params['mobile'] = 1;
+                               }
+                               $url = wfAppendQuery(
+                                       $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ),
+                                       $params
+                               );
                                $inject_html .= Xml::element( 'img',
                                        array(
                                                'src' => $url,
@@ -728,6 +735,11 @@
                }
 
                return true;
+       }
+
+       private static function isMobileDomain() {
+               return class_exists( 'MobileContext' )
+                       && MobileContext::singleton()->usingMobileDomain();
        }
 
        /**
@@ -1315,10 +1327,14 @@
                                $wgCentralAuthLoginWiki, 
'Special:CentralAutoLogin/checkLoggedIn'
                        );
                        if ( $url !== false ) {
-                               $vars['wgCentralAuthCheckLoggedInURL'] = 
wfAppendQuery( $url, array(
+                               $params = array(
                                        'type' => 'script',
                                        'wikiid' => wfWikiID(),
-                               ) );
+                               );
+                               if ( self::isMobileDomain() ) {
+                                       $params['mobile'] = 1;
+                               }
+                               $vars['wgCentralAuthCheckLoggedInURL'] = 
wfAppendQuery( $url, $params );
                        }
                }
        }
@@ -1423,9 +1439,16 @@
                                // For non-JS clients. Use WikiMap to avoid 
localization of the
                                // 'Special' namespace, see bug 54195.
                                $wiki = WikiMap::getWiki( wfWikiID() );
-                               $url = wfAppendQuery( $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ), array(
+                               $params = array(
                                        'type' => '1x1',
-                               ) );
+                               );
+                               if ( self::isMobileDomain() ) {
+                                       $params['mobile'] = 1;
+                               }
+                               $url = wfAppendQuery(
+                                       $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ),
+                                       $params
+                               );
                                $out->addHTML( '<noscript>' . Xml::element( 
'img',
                                        array(
                                                'src' => $url,
@@ -1480,10 +1503,24 @@
                foreach ( $wgCentralAuthAutoLoginWikis as $wiki ) {
                        $wiki = WikiMap::getWiki( $wiki );
                        // Use WikiReference::getFullUrl(), returns a 
protocol-relative URL if needed
-                       $url = wfAppendQuery( $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ), array(
+                       $params = array(
                                'type' => '1x1',
                                'from' => wfWikiID(),
-                       ) );
+                       );
+                       $url = wfAppendQuery(
+                               $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ),
+                               $params
+                       );
+                       if ( self::isMobileDomain() ) {
+                               $params['mobile'] = 1;
+                               // Do autologin on the mobile domain for each 
wiki
+                               $url = MobileContext::singleton()->getMobileUrl(
+                                       wfAppendQuery(
+                                               $wiki->getFullUrl( 
'Special:CentralAutoLogin/start' ),
+                                               $params
+                                       )
+                               );
+                       }
                        $html .= Xml::element( 'img',
                                array(
                                        'src' => $url,
diff --git a/includes/specials/SpecialCentralAutoLogin.php 
b/includes/specials/SpecialCentralAutoLogin.php
index 3d25bc5..99aefcd 100644
--- a/includes/specials/SpecialCentralAutoLogin.php
+++ b/includes/specials/SpecialCentralAutoLogin.php
@@ -79,9 +79,9 @@
                        'return',
                        'returnto',
                        'returntoquery',
-                       'proto'
+                       'proto',
+                       'mobile'
                );
-
                switch ( strval( $par ) ) {
                case 'P3P': // Explain the bogus P3P header
                        $this->setHeaders();
@@ -489,6 +489,14 @@
 
        private function do302Redirect( $target, $state, $params ) {
                $url = WikiMap::getForeignURL( $target, 
"Special:CentralAutoLogin/$state" );
+               if ( wfWikiID() == $this->loginWiki
+                       && class_exists( 'MobileContext' )
+                       && isset( $params['mobile'] )
+                       && $params['mobile']
+               ) {
+                       $url = MobileContext::singleton()->getMobileUrl( $url );
+               }
+
                if ( $url === false ) {
                        $this->doFinalOutput( false, 'Invalid target wiki' );
                } else {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ie1c373a1f039fb1ab9866543288bcfaf87c51ab4
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/CentralAuth
Gerrit-Branch: master
Gerrit-Owner: CSteipp <cste...@wikimedia.org>
Gerrit-Reviewer: Anomie <bjor...@wikimedia.org>
Gerrit-Reviewer: CSteipp <cste...@wikimedia.org>
Gerrit-Reviewer: Jdlrobson <jrob...@wikimedia.org>
Gerrit-Reviewer: Kaldari <rkald...@wikimedia.org>
Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com>
Gerrit-Reviewer: MaxSem <maxsem.w...@gmail.com>
Gerrit-Reviewer: Phuedx <g...@samsmith.io>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to