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

Change subject: Update WikimediaIncubator for AuthManager
......................................................................


Update WikimediaIncubator for AuthManager

Bug: T111487
Change-Id: I10f21c153647ebc5eefd098c3951f620797a4da5
---
M WikimediaIncubator.class.php
A WikimediaIncubatorAuthenticationRequest.php
A WikimediaIncubatorSecondaryAuthenticationProvider.php
M extension.json
4 files changed, 110 insertions(+), 3 deletions(-)

Approvals:
  Gergő Tisza: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/WikimediaIncubator.class.php b/WikimediaIncubator.class.php
index 3a8f3c0..d1ccd86 100644
--- a/WikimediaIncubator.class.php
+++ b/WikimediaIncubator.class.php
@@ -16,10 +16,23 @@
         */
        public static function onRegistration() {
                global $wmincExistingWikis, $wgLocalDatabases;
+               global $wgHooks, $wgDisableAuthManager, 
$wgAuthManagerAutoConfig;
 
                if ( $wmincExistingWikis === null ) {
                        $wmincExistingWikis = $wgLocalDatabases;
                }
+
+               if ( class_exists( MediaWiki\Auth\AuthManager::class ) && 
empty( $wgDisableAuthManager ) ) {
+                       $wgAuthManagerAutoConfig['secondaryauth'] += [
+                               
WikimediaIncubatorSecondaryAuthenticationProvider::class => [
+                                       'class' => 
WikimediaIncubatorSecondaryAuthenticationProvider::class,
+                                       'sort' => 0, // non-UI secondaries 
should run early
+                               ]
+                       ];
+               } else {
+                       $wgHooks['UserCreateForm'][] = 
'AutoTestWiki::onUserCreateForm';
+                       $wgHooks['AddNewAccount'][] = 
'AutoTestWiki::onAddNewAccount';
+               }
        }
 
        /**
diff --git a/WikimediaIncubatorAuthenticationRequest.php 
b/WikimediaIncubatorAuthenticationRequest.php
new file mode 100644
index 0000000..3e9539c
--- /dev/null
+++ b/WikimediaIncubatorAuthenticationRequest.php
@@ -0,0 +1,42 @@
+<?php
+
+use MediaWiki\Auth\AuthenticationRequest;
+
+/**
+ * An authentication request to grab the custom fields passed to the creation 
form.
+ */
+class WikimediaIncubatorAuthenticationRequest extends AuthenticationRequest {
+       public $required = self::OPTIONAL;
+
+       public $testwikiproject;
+       public $testwikicode;
+
+       public function getFieldInfo() {
+               $request = RequestContext::getMain()->getRequest();
+
+               // Accessing $request for the defaults is a bit ugly, but it's 
what's
+               // needed here.
+               return [
+                       'testwikiproject' => [
+                               'type' => 'hidden',
+                               'value' => strtolower( $request->getVal( 
'testwikiproject', '' ) ),
+                               'label' => wfMessage( 'wminc-testwiki' ),
+                               'help' => wfMessage( 'wminc-prefinfo-project' ),
+                       ],
+                       'testwikicode' => [
+                               'type' => 'hidden',
+                               'value' => strtolower( $request->getVal( 
'testwikicode', '' ) ),
+                               'label' => wfMessage( 'wminc-testwiki-code' ),
+                               'help' => wfMessage( 'wminc-prefinfo-code' ),
+                       ],
+               ];
+       }
+
+       public function loadFromSubmission( array $data ) {
+               global $wmincProjects;
+
+               return parent::loadFromSubmission( $data ) &&
+                       WikimediaIncubator::validateLanguageCode( 
$this->testwikicode ) &&
+                       isset( $wmincProjects[$this->testwikiproject] );
+       }
+}
diff --git a/WikimediaIncubatorSecondaryAuthenticationProvider.php 
b/WikimediaIncubatorSecondaryAuthenticationProvider.php
new file mode 100644
index 0000000..33ba4e6
--- /dev/null
+++ b/WikimediaIncubatorSecondaryAuthenticationProvider.php
@@ -0,0 +1,52 @@
+<?php
+
+use MediaWiki\Auth\AuthManager;
+use MediaWiki\Auth\AbstractSecondaryAuthenticationProvider;
+use MediaWiki\Auth\AuthenticationRequest;
+use MediaWiki\Auth\AuthenticationResponse;
+
+/**
+ * If URL parameters "testwikiproject" and "testwikicode" are set
+ * on account creation form, set them as user preference.
+ * This can be used to work with links on other sites
+ * referring to the account creation form so users don't *have* to
+ * change their preferences (automatically is always better :p)
+ */
+class WikimediaIncubatorSecondaryAuthenticationProvider
+       extends AbstractSecondaryAuthenticationProvider
+{
+
+       /**
+        * @param array $params
+        */
+       public function __construct( $params = [] ) {
+       }
+
+       public function getAuthenticationRequests( $action, array $options ) {
+               if ( $action === AuthManager::ACTION_CREATE ) {
+                       return [ new WikimediaIncubatorAuthenticationRequest ];
+               }
+
+               return [];
+       }
+
+       public function beginSecondaryAuthentication( $user, array $reqs ) {
+               return AuthenticationResponse::newAbstain();
+       }
+
+       public function beginSecondaryAccountCreation( $user, $creator, array 
$reqs ) {
+               global $wmincPref;
+
+               $req = AuthenticationRequest::getRequestByClass(
+                       $reqs, WikimediaIncubatorAuthenticationRequest::class
+               );
+
+               if ( $req ) {
+                       $user->setOption( $wmincPref . '-project', 
$req->testwikiproject );
+                       $user->setOption( $wmincPref . '-code', 
$req->testwikicode );
+                       $user->saveSettings();
+               }
+
+               return AuthenticationResponse::newPass();
+       }
+}
diff --git a/extension.json b/extension.json
index 9a3e690..0178ef6 100644
--- a/extension.json
+++ b/extension.json
@@ -122,7 +122,9 @@
                "InfoPage": "InfoPage.php",
                "ListUsersTestWiki": "ListUsersTestWiki.php",
                "SpecialSearchWiki": "SpecialSearchWiki.php",
-               "SpecialIncubatorFirstSteps": "SpecialIncubatorFirstSteps.php"
+               "SpecialIncubatorFirstSteps": "SpecialIncubatorFirstSteps.php",
+               "WikimediaIncubatorAuthenticationRequest": 
"WikimediaIncubatorAuthenticationRequest.php",
+               "WikimediaIncubatorSecondaryAuthenticationProvider": 
"WikimediaIncubatorSecondaryAuthenticationProvider.php"
        },
        "ResourceModules": {
                "WikimediaIncubator.InfoPage": {
@@ -146,8 +148,6 @@
                "AbortMove": "WikimediaIncubator::checkPrefixMovePermissions",
                "ChangesListSpecialPageQuery": "TestWikiRC::onRcQuery",
                "SpecialRecentChangesPanel": "TestWikiRC::onRcForm",
-               "UserCreateForm": "AutoTestWiki::onUserCreateForm",
-               "AddNewAccount": "AutoTestWiki::onAddNewAccount",
                "ShowMissingArticle": 
"WikimediaIncubator::onShowMissingArticle",
                "EditFormPreloadText": 
"WikimediaIncubator::onEditFormPreloadText",
                "MediaWikiPerformAction": 
"WikimediaIncubator::onMediaWikiPerformAction",

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I10f21c153647ebc5eefd098c3951f620797a4da5
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikimediaIncubator
Gerrit-Branch: master
Gerrit-Owner: Anomie <[email protected]>
Gerrit-Reviewer: GergÅ‘ Tisza <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to