Anomie has uploaded a new change for review.
https://gerrit.wikimedia.org/r/290715
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(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikimediaIncubator
refs/changes/15/290715/1
diff --git a/WikimediaIncubator.class.php b/WikimediaIncubator.class.php
index 3a8f3c0..c7cc37d 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: newchange
Gerrit-Change-Id: I10f21c153647ebc5eefd098c3951f620797a4da5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikimediaIncubator
Gerrit-Branch: master
Gerrit-Owner: Anomie <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits