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

Change subject: Use UserInputWidget for Special:ManageGoogleLogin
......................................................................


Use UserInputWidget for Special:ManageGoogleLogin

Also:
- Simplify form submission a bit
- Check wpEditToken, when Google Id is changed
- Use OOUI forms

Depends on: I9501c85f4288c255bbe3a5284e99b57b6169916f

Change-Id: Iaeff912e6437d6ebef0d5b1919ce8cf53a7fd5f1
---
M includes/specials/SpecialManageGoogleLogin.php
1 file changed, 39 insertions(+), 44 deletions(-)

Approvals:
  Florianschmidtwelzow: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/specials/SpecialManageGoogleLogin.php 
b/includes/specials/SpecialManageGoogleLogin.php
index f7b6103..60d7572 100644
--- a/includes/specials/SpecialManageGoogleLogin.php
+++ b/includes/specials/SpecialManageGoogleLogin.php
@@ -4,7 +4,7 @@
        private $mGoogleLogin;
 
        /** @var User $manageableUser User object of the user to manage */
-       private static $manageableUser = null;
+       private $manageableUser = null;
 
        function __construct() {
                parent::__construct( 'ManageGoogleLogin', 'managegooglelogin' );
@@ -24,36 +24,30 @@
                        return;
                }
                $this->setHeaders();
-               if ( !$request->getVal( 'glManageableUser' ) ) {
-                       $out->addModules( 'mediawiki.userSuggest' );
-                       $formFields = array(
-                               'username' => array(
-                                       'type' => 'text',
-                                       'name' => 'username',
-                                       'label-message' => 
'googlelogin-username',
-                                       'id' => 'mw-gl-username',
-                                       'cssclass' => 'mw-autocomplete-user',
-                                       'autofocus' => true,
-                               )
-                       );
-                       $htmlForm = new HTMLForm( $formFields, 
$this->getContext(), 'googlelogin-manage' );
-                       $htmlForm->setWrapperLegendMsg( $this->msg( 
'googlelogin-managelegend' ) );
-                       $htmlForm->setSubmitText( $this->msg( 
'googlelogin-manage-usersubmit' )->text() );
-                       $htmlForm->setSubmitProgressive();
-                       $htmlForm->setSubmitCallback( array( $this, 
'submitUserName' ) );
-                       $htmlForm->show();
-               } else {
-                       $this->submitUserName(
-                               array(
-                                       'username' => $request->getVal( 
'glManageableUser' )
-                               )
-                       );
-               }
+               $out->addModules( 'mediawiki.userSuggest' );
+               $formFields = array(
+                       'username' => array(
+                               'type' => 'user',
+                               'name' => 'username',
+                               'label-message' => 'googlelogin-username',
+                               'id' => 'mw-gl-username',
+                               'autofocus' => true,
+                               'exists' => true,
+                       ),
+                       'submit' => array(
+                               'type' => 'submit',
+                               'default' => $this->msg( 
'googlelogin-manage-usersubmit' )->text(),
+                               'flags' => array( 'progressive', 'primary' ),
+                       ),
+               );
+               $htmlForm = HTMLForm::factory( 'ooui', $formFields, 
$this->getContext(), 'googlelogin-manage' );
+               $htmlForm->setWrapperLegendMsg( $this->msg( 
'googlelogin-managelegend' ) );
+               $htmlForm->suppressDefaultSubmit();
+               $htmlForm->setSubmitCallback( array( $this, 'submitUserName' ) 
);
+               $htmlForm->show();
 
-               if ( self::$manageableUser ) {
-                       $this->manageUser( self::$manageableUser );
-               } else {
-
+               if ( $this->manageableUser ) {
+                       $this->manageUser( $this->manageableUser );
                }
        }
 
@@ -63,15 +57,8 @@
         * @param array $data Formdata
         * @return boolean
         */
-       public function submitUserName( $data ) {
-               if ( !isset( $data['username'] ) ) {
-                       return false;
-               }
-               $checkUser = User::newFromName( $data['username'] );
-               if ( !$checkUser || $checkUser->isAnon() ) {
-                       return wfMessage( 'googlelogin-manage-notexist', 
$data['username'] );
-               }
-               self::$manageableUser = $checkUser;
+       public function submitUserName( array $data ) {
+               $this->submitForm( $data, false );
                return true;
        }
 
@@ -170,17 +157,17 @@
                                'id' => 'mw-gl-username',
                        )
                );
-               $htmlForm = new HTMLForm( $formFields, $this->getContext(), 
'googlelogin-change' );
-               $htmlForm->addHiddenField( 'glManageableUser', $user->getName() 
);
+               $htmlForm = HTMLForm::factory( 'ooui', $formFields, 
$this->getContext(), 'googlelogin-change' );
+               $htmlForm->addHiddenField( 'username', $user->getName() );
                $htmlForm->setWrapperLegendMsg( $this->msg( 
'googlelogin-manage-changelegend' ) );
-               $htmlForm->setSubmitCallback( array( 
'SpecialManageGoogleLogin', 'submitGoogleId' ) );
+               $htmlForm->setSubmitCallback( array( $this, 'submitForm' ) );
                if ( $id ) {
                        $htmlForm->addButton(
                                'terminate-link',
                                $this->msg( 
'googlelogin-manage-terminatebutton' )->escaped(),
                                null,
                                array(
-                                       'class' => 'mw-ui-destructive',
+                                       'flags' => array( 'destructive' ),
                                )
                        );
                }
@@ -191,9 +178,17 @@
         * Submithandler for new google id
         *
         * @param array $data Formdata
+        * @param boolean $checkSession If true, checks, if the form was 
submitted by the user itself
         * @return boolean
         */
-       public static function submitGoogleId( $data ) {
+       public function submitForm( array $data, $checkSession = true ) {
+               $user = $this->getUser();
+               $request = $this->getRequest();
+               $name = ( isset( $data['username'] ) ? $data['username'] : '' );
+               if ( $checkSession && !$user->matchEditToken( $request->getVal( 
'wpEditToken' ), $name ) ) {
+                       throw new ErrorPageError( 'sessionfailure-title', 
'sessionfailure' );
+               }
+               $this->manageableUser = User::newFromName( $name );
                return false;
        }
 

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Iaeff912e6437d6ebef0d5b1919ce8cf53a7fd5f1
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/GoogleLogin
Gerrit-Branch: master
Gerrit-Owner: Florianschmidtwelzow <[email protected]>
Gerrit-Reviewer: Florianschmidtwelzow <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to