X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialUserlogin.php;h=13957c32eb3ecca0e9484ef596e4a0bd8661c4a7;hb=271da8812794176ce928978b77dbd2a6381d8193;hp=f446a98f8f999e8dd6f63d504076e2e118407ece;hpb=7a6b211c486017c100c8398a25e45e8042e6727f;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php index f446a98f8f..ee78a61d27 100644 --- a/includes/specials/SpecialUserlogin.php +++ b/includes/specials/SpecialUserlogin.php @@ -44,6 +44,24 @@ class LoginForm extends SpecialPage { const WRONG_TOKEN = 13; const USER_MIGRATED = 14; + public static $statusCodes = array( + self::SUCCESS => 'success', + self::NO_NAME => 'no_name', + self::ILLEGAL => 'illegal', + self::WRONG_PLUGIN_PASS => 'wrong_plugin_pass', + self::NOT_EXISTS => 'not_exists', + self::WRONG_PASS => 'wrong_pass', + self::EMPTY_PASS => 'empty_pass', + self::RESET_PASS => 'reset_pass', + self::ABORTED => 'aborted', + self::CREATE_BLOCKED => 'create_blocked', + self::THROTTLED => 'throttled', + self::USER_BLOCKED => 'user_blocked', + self::NEED_TOKEN => 'need_token', + self::WRONG_TOKEN => 'wrong_token', + self::USER_MIGRATED => 'user_migrated', + ); + /** * Valid error and warning messages * @@ -541,7 +559,13 @@ class LoginForm extends SpecialPage { $u = User::newFromName( $this->mUsername, 'creatable' ); if ( !$u ) { return Status::newFatal( 'noname' ); - } elseif ( 0 != $u->idForName( User::READ_LOCKING ) ) { + } + + # Make sure the user does not exist already + $lock = $wgMemc->getScopedLock( wfGlobalCacheKey( 'account', md5( $this->mUsername ) ) ); + if ( !$lock ) { + return Status::newFatal( 'usernameinprogress' ); + } elseif ( $u->idForName( User::READ_LOCKING ) ) { return Status::newFatal( 'userexists' ); } @@ -650,7 +674,12 @@ class LoginForm extends SpecialPage { $u->setRealName( $this->mRealName ); $u->setToken(); + Hooks::run( 'LocalUserCreated', array( $u, $autocreate ) ); + $oldUser = $u; $wgAuth->initUser( $u, $autocreate ); + if ( $oldUser !== $u ) { + wfWarn( get_class( $wgAuth ) . '::initUser() replaced the user object' ); + } $u->saveSettings(); @@ -796,7 +825,12 @@ class LoginForm extends SpecialPage { $retval = self::RESET_PASS; $this->mAbortLoginErrorMsg = 'resetpass-expired'; } else { + Hooks::run( 'UserLoggedIn', array( $u ) ); + $oldUser = $u; $wgAuth->updateUser( $u ); + if ( $oldUser !== $u ) { + wfWarn( get_class( $wgAuth ) . '::updateUser() replaced the user object' ); + } $wgUser = $u; // This should set it for OutputPage and the Skin // which is needed or the personal links will be @@ -921,8 +955,8 @@ class LoginForm extends SpecialPage { global $wgMemc, $wgLang, $wgSecureLogin, $wgPasswordAttemptThrottle, $wgInvalidPasswordReset; - $status = $this->authenticateUserData(); - switch ( $status ) { + $authRes = $this->authenticateUserData(); + switch ( $authRes ) { case self::SUCCESS: # We've verified now, update the real record $user = $this->getUser(); @@ -1048,8 +1082,8 @@ class LoginForm extends SpecialPage { LoggerFactory::getInstance( 'authmanager' )->info( 'Login attempt', array( 'event' => 'login', - 'successful' => $status === self::SUCCESS, - 'status' => $status, + 'successful' => $authRes === self::SUCCESS, + 'status' => LoginForm::$statusCodes[$authRes], ) ); } @@ -1343,13 +1377,10 @@ class LoginForm extends SpecialPage { 'mediawiki.ui.input', 'mediawiki.special.userlogin.common.styles' ) ); - $out->addModules( array( - 'mediawiki.special.userlogin.common.js' - ) ); if ( $this->mType == 'signup' ) { // XXX hack pending RL or JS parse() support for complex content messages - // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349 + // https://phabricator.wikimedia.org/T27349 $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp', $this->msg( 'createacct-imgcaptcha-help' )->parse() );