Fix SpecialPasswordResetOnSubmit parameter handling
authorGergő Tisza <gtisza@wikimedia.org>
Tue, 15 Nov 2016 02:27:02 +0000 (02:27 +0000)
committerGergő Tisza <gtisza@wikimedia.org>
Tue, 15 Nov 2016 02:41:57 +0000 (02:41 +0000)
Special:PasswordReset will take either the username or the email
into account but never both. Reflect this in the way parameters
are passed to the hook.

This also makes sure hook handlers never receive an unsanitized
email address.

Change-Id: I8d3b3d81e0cd5f92e5cd0a866a16695638610592

includes/user/PasswordReset.php

index 889ec92..e023744 100644 (file)
@@ -134,12 +134,14 @@ class PasswordReset {
                if ( $resetRoutes['username'] && $username ) {
                        $method = 'username';
                        $users = [ User::newFromName( $username ) ];
+                       $email = null;
                } elseif ( $resetRoutes['email'] && $email ) {
                        if ( !Sanitizer::validateEmail( $email ) ) {
                                return StatusValue::newFatal( 'passwordreset-invalidemail' );
                        }
                        $method = 'email';
                        $users = $this->getUsersByEmail( $email );
+                       $username = null;
                } else {
                        // The user didn't supply any data
                        return StatusValue::newFatal( 'passwordreset-nodata' );