Merge "If a user logs in while not on https, then the user should be sent back to...
[lhc/web/wiklou.git] / includes / specials / SpecialUserlogin.php
index 3441f7a..83b9089 100644 (file)
@@ -113,6 +113,21 @@ class LoginForm extends SpecialPage {
                $wgUseMediaWikiUIEverywhere = true;
        }
 
+       /**
+        * Returns an array of all valid error messages.
+        *
+        * @return array
+        */
+       public static function getValidErrorMessages() {
+               static $messages = null;
+               if ( !$messages ) {
+                       $messages = self::$validErrorMessages;
+                       wfRunHooks( 'LoginFormValidErrorMessages', array( &$messages ) );
+               }
+
+               return $messages;
+       }
+
        /**
         * Loader
         */
@@ -176,13 +191,13 @@ class LoginForm extends SpecialPage {
 
                // Only show valid error or warning messages.
                if ( $entryError->exists()
-                       && in_array( $entryError->getKey(), self::$validErrorMessages )
+                       && in_array( $entryError->getKey(), self::getValidErrorMessages() )
                ) {
                        $this->mEntryErrorType = 'error';
                        $this->mEntryError = $entryError->rawParams( $loginreqlink )->escaped();
 
                } elseif ( $entryWarning->exists()
-                       && in_array( $entryWarning->getKey(), self::$validErrorMessages )
+                       && in_array( $entryWarning->getKey(), self::getValidErrorMessages() )
                ) {
                        $this->mEntryErrorType = 'warning';
                        $this->mEntryError = $entryWarning->rawParams( $loginreqlink )->escaped();
@@ -513,20 +528,8 @@ class LoginForm extends SpecialPage {
                        return Status::newFatal( 'sorbs_create_account_reason' );
                }
 
-               // Normalize the name so that silly things don't cause "invalid username"
-               // errors. User::newFromName does some rather strict checking, rejecting
-               // e.g. leading/trailing/multiple spaces. But first we need to reject
-               // usernames that would be treated as titles with a fragment part.
-               if ( strpos( $this->mUsername, '#' ) !== false ) {
-                       return Status::newFatal( 'noname' );
-               }
-               $title = Title::makeTitleSafe( NS_USER, $this->mUsername );
-               if ( !is_object( $title ) ) {
-                       return Status::newFatal( 'noname' );
-               }
-
                # Now create a dummy user ($u) and check if it is valid
-               $u = User::newFromName( $title->getText(), 'creatable' );
+               $u = User::newFromName( $this->mUsername, 'creatable' );
                if ( !is_object( $u ) ) {
                        return Status::newFatal( 'noname' );
                } elseif ( 0 != $u->idForName() ) {