X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialUserlogin.php;h=f304ac0c4d8074121e7fbad5beca7a56113d8c44;hb=40745cfef875263d13f29cea01b501655d218f16;hp=e684c44279823ca415181a6c5d2e82f369c34bbc;hpb=52f18d86dc410dd5a79a3f93153356e7095ab5de;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialUserlogin.php b/includes/SpecialUserlogin.php index e684c44279..f304ac0c4d 100644 --- a/includes/SpecialUserlogin.php +++ b/includes/SpecialUserlogin.php @@ -11,7 +11,7 @@ function wfSpecialUserlogin() { global $wgCommandLineMode; global $wgRequest; - if( !$wgCommandLineMode && !isset( $_COOKIE[ini_get('session.name')] ) ) { + if( !$wgCommandLineMode && !isset( $_COOKIE[session_name()] ) ) { User::SetupSession(); } @@ -37,6 +37,7 @@ class LoginForm { global $wgLang, $wgAllowRealName, $wgEnableEmail; global $wgAuth; + $this->mType = $request->getText( 'type' ); $this->mName = $request->getText( 'wpName' ); $this->mPassword = $request->getText( 'wpPassword' ); $this->mRetype = $request->getText( 'wpRetype' ); @@ -147,6 +148,8 @@ class LoginForm { $wgUser->sendConfirmationMail(); } + wfRunHooks( 'AddNewAccount' ); + if( $this->hasSessionCookie() ) { return $this->successfulLogin( wfMsg( 'welcomecreation', $wgUser->getName() ) ); } else { @@ -159,10 +162,9 @@ class LoginForm { */ function addNewAccountInternal() { global $wgUser, $wgOut; - global $wgMaxNameChars, $wgUseLatin1, $wgEnableSorbs, $wgProxyWhitelist; - global $wgMemc, $wgAccountCreationThrottle, $wgDBname, $wgIP; - global $wgMinimalPasswordLength; - global $wgAuth; + global $wgUseLatin1, $wgEnableSorbs, $wgProxyWhitelist; + global $wgMemc, $wgAccountCreationThrottle, $wgDBname; + global $wgAuth, $wgMinimalPasswordLength; // If the user passes an invalid domain, something is fishy if( !$wgAuth->validDomain( $this->mDomain ) ) { @@ -183,17 +185,16 @@ class LoginForm { } } - - if (!$wgUser->isAllowedToCreateAccount()) { $this->userNotPrivilegedMessage(); return false; } - if ( $wgEnableSorbs && !in_array( $wgIP, $wgProxyWhitelist ) && - $wgUser->inSorbsBlacklist( $wgIP ) ) + $ip = wfGetIP(); + if ( $wgEnableSorbs && !in_array( $ip, $wgProxyWhitelist ) && + $wgUser->inSorbsBlacklist( $ip ) ) { - $this->mainLoginForm( wfMsg( 'sorbs_create_account_reason' ) ); + $this->mainLoginForm( wfMsg( 'sorbs_create_account_reason' ) . ' (' . htmlspecialchars( $ip ) . ')' ); return; } @@ -205,16 +206,11 @@ class LoginForm { $name = trim( $this->mName ); $u = User::newFromName( $name ); - if ( is_null( $u ) || - ( '' == $name ) || - $wgUser->isIP( $name ) || - (strpos( $name, '/' ) !== false) || - (strlen( $name ) > $wgMaxNameChars) || - ucFirst($name) != $u->getName() ) - { + if ( is_null( $u ) ) { $this->mainLoginForm( wfMsg( 'noname' ) ); return false; } + if ( wfReadOnly() ) { $wgOut->readOnlyPage(); return false; @@ -225,13 +221,13 @@ class LoginForm { return false; } - if ( strlen( $this->mPassword ) < $wgMinimalPasswordLength ) { + if ( !$wgUser->isValidPassword( $this->mPassword ) ) { $this->mainLoginForm( wfMsg( 'passwordtooshort', $wgMinimalPasswordLength ) ); return false; } if ( $wgAccountCreationThrottle ) { - $key = $wgDBname.':acctcreate:ip:'.$wgIP; + $key = $wgDBname.':acctcreate:ip:'.$ip; $value = $wgMemc->incr( $key ); if ( !$value ) { $wgMemc->set( $key, 1, 86400 ); @@ -272,9 +268,7 @@ class LoginForm { global $wgAuth; $wgAuth->initUser( $u ); - if ( $this->mRemember ) { $r = 1; } - else { $r = 0; } - $u->setOption( 'rememberpassword', $r ); + $u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 ); return $u; } @@ -318,7 +312,7 @@ class LoginForm { } if (!$u->checkPassword( $this->mPassword )) { - $this->mainLoginForm( wfMsg( 'wrongpassword' ) ); + $this->mainLoginForm( wfMsg( $this->mPassword == '' ? 'wrongpasswordempty' : 'wrongpassword' ) ); return; } @@ -372,7 +366,7 @@ class LoginForm { if( WikiError::isError( $result ) ) { $this->mainLoginForm( wfMsg( 'mailerror', $result->getMessage() ) ); } else { - $this->mainLoginForm( wfMsg( 'passwordsent', $u->getName() ) ); + $this->mainLoginForm( wfMsg( 'passwordsent', $u->getName() ), 'success' ); } } @@ -382,7 +376,7 @@ class LoginForm { * @access private */ function mailPasswordInternal( $u ) { - global $wgPasswordSender, $wgDBname, $wgIP; + global $wgPasswordSender, $wgDBname; global $wgCookiePath, $wgCookieDomain; if ( '' == $u->getEmail() ) { @@ -396,12 +390,12 @@ class LoginForm { $u->saveSettings(); - $ip = $wgIP; + $ip = wfGetIP(); if ( '' == $ip ) { $ip = '(Unknown)'; } - $m = wfMsg( 'passwordremindermailbody', $ip, $u->getName(), wfUrlencode($u->getName()), $np ); - $result = $u->sendMail( wfMsg( 'passwordremindermailsubject' ), $m ); - + $m = wfMsg( 'passwordremindertext', $ip, $u->getName(), $np ); + + $result = $u->sendMail( wfMsg( 'passwordremindertitle' ), $m ); return $result; } @@ -441,7 +435,7 @@ class LoginForm { /** * @access private */ - function mainLoginForm( $err ) { + function mainLoginForm( $msg, $msgtype = 'error' ) { global $wgUser, $wgOut, $wgLang; global $wgDBname, $wgAllowRealName, $wgEnableEmail; global $wgAuth; @@ -454,14 +448,33 @@ class LoginForm { } } - $q = 'action=submitlogin'; - if ( !empty( $this->mReturnto ) ) { - $q .= '&returnto=' . wfUrlencode( $this->mReturnto ); - } $titleObj = Title::makeTitle( NS_SPECIAL, 'Userlogin' ); require_once( 'templates/Userlogin.php' ); - $template =& new UserloginTemplate(); + + if ( $this->mType == 'signup' ) { + $template =& new UsercreateTemplate(); + $q = 'action=submitlogin&type=signup'; + $linkq = 'type=login'; + $linkmsg = 'gotaccount'; + } else { + $template =& new UserloginTemplate(); + $q = 'action=submitlogin&type=login'; + $linkq = 'type=signup'; + $linkmsg = 'nologin'; + } + + if ( !empty( $this->mReturnto ) ) { + $returnto = '&returnto=' . wfUrlencode( $this->mReturnto ); + $q .= $returnto; + $linkq .= $returnto; + } + + $link = ''; + $link .= wfMsgHtml( $linkmsg . 'link' ); + $link .= ''; + + $template->set( 'link', wfMsgHtml( $linkmsg, $link ) ); $template->set( 'name', $this->mName ); $template->set( 'password', $this->mPassword ); @@ -471,7 +484,8 @@ class LoginForm { $template->set( 'domain', $this->mDomain ); $template->set( 'action', $titleObj->getLocalUrl( $q ) ); - $template->set( 'error', $err ); + $template->set( 'message', $msg ); + $template->set( 'messagetype', $msgtype ); $template->set( 'create', $wgUser->isAllowedToCreateAccount() ); $template->set( 'createemail', $wgEnableEmail && $wgUser->isLoggedIn() ); $template->set( 'userealname', $wgAllowRealName ); @@ -490,7 +504,7 @@ class LoginForm { */ function hasSessionCookie() { global $wgDisableCookieCheck; - return ( $wgDisableCookieCheck ) ? true : ( '' != $_COOKIE[session_name()] ); + return ( $wgDisableCookieCheck ) ? true : ( isset( $_COOKIE[session_name()] ) ); } /**