X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialUserlogin.php;h=bb3e0c6a0fd48eee778de79c47a28ea69f88bb72;hb=ae7a90eb7237bc401ad7717f6ae0bdc7c6bbb52c;hp=8939700a5f7d69a7e250ddd05d99af55b83e7ef8;hpb=8e55334aef1c4573b987c3cbd7c6d26ef36e761e;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialUserlogin.php b/includes/SpecialUserlogin.php index 8939700a5f..bb3e0c6a0f 100644 --- a/includes/SpecialUserlogin.php +++ b/includes/SpecialUserlogin.php @@ -1,415 +1,529 @@ specialPage( "Userlogout" ) ) $returnto = ""; - - $wpCookieCheck = $_REQUEST[ "wpCookieCheck" ]; - - if ( isset( $wpCookieCheck ) ) { - onCookieRedirectCheck( $wpCookieCheck ); - } else if ( isset( $wpCreateaccount ) ) { - addNewAccount(); - } else if ( isset( $wpCreateaccountMail ) ) { - addNewAccountMailPassword(); - } else if ( isset( $wpMailmypassword ) ) { - mailPassword(); - } else if ( "submit" == $action || isset( $wpLoginattempt ) ) { - processLogin(); - } else { - mainLoginForm( "" ); - } + $form = new LoginForm( $wgRequest ); + $form->execute(); } - -/* private */ function addNewAccountMailPassword() -{ - global $wgOut, $wpEmail, $wpName; +/** + * + * @package MediaWiki + * @subpackage SpecialPage + */ +class LoginForm { + var $mName, $mPassword, $mRetype, $mReturnto, $mCookieCheck, $mPosted; + var $mAction, $mCreateaccount, $mCreateaccountMail, $mMailmypassword; + var $mLoginattempt, $mRemember, $mEmail, $mDomain; - if ("" == $wpEmail) { - mainLoginForm( wfMsg( "noemail", $wpName ) ); - return; - } - - $u = addNewaccountInternal(); - - if ($u == NULL) { - return; + /** + * Constructor + * @param webrequest $request A webrequest object passed by reference + */ + function LoginForm( &$request ) { + global $wgLang, $wgAllowRealName, $wgEnableEmail; + global $wgAuth; + + $this->mName = $request->getText( 'wpName' ); + $this->mPassword = $request->getText( 'wpPassword' ); + $this->mRetype = $request->getText( 'wpRetype' ); + $this->mDomain = $request->getText( 'wpDomain' ); + $this->mReturnto = $request->getVal( 'returnto' ); + $this->mCookieCheck = $request->getVal( 'wpCookieCheck' ); + $this->mPosted = $request->wasPosted(); + $this->mCreateaccount = $request->getCheck( 'wpCreateaccount' ); + $this->mCreateaccountMail = $request->getCheck( 'wpCreateaccountMail' ) + && $wgEnableEmail; + $this->mMailmypassword = $request->getCheck( 'wpMailmypassword' ) + && $wgEnableEmail; + $this->mLoginattempt = $request->getCheck( 'wpLoginattempt' ); + $this->mAction = $request->getVal( 'action' ); + $this->mRemember = $request->getCheck( 'wpRemember' ); + + if( $wgEnableEmail ) { + $this->mEmail = $request->getText( 'wpEmail' ); + } else { + $this->mEmail = ''; + } + if( $wgAllowRealName ) { + $this->mRealName = $request->getText( 'wpRealName' ); + } else { + $this->mRealName = ''; + } + + if( !$wgAuth->validDomain( $this->mDomain ) ) { + $this->mDomain = 'invaliddomain'; + } + $wgAuth->setDomain( $this->mDomain ); + + # When switching accounts, it sucks to get automatically logged out + if( $this->mReturnto == $wgLang->specialPage( 'Userlogout' ) ) { + $this->mReturnto = ''; + } } - $u->saveSettings(); - if (mailPasswordInternal($u) == NULL) { - return; + function execute() { + if ( !is_null( $this->mCookieCheck ) ) { + $this->onCookieRedirectCheck( $this->mCookieCheck ); + return; + } else if( $this->mPosted ) { + if( $this->mCreateaccount ) { + return $this->addNewAccount(); + } else if ( $this->mCreateaccountMail ) { + return $this->addNewAccountMailPassword(); + } else if ( $this->mMailmypassword ) { + return $this->mailPassword(); + } else if ( ( 'submitlogin' == $this->mAction ) || $this->mLoginattempt ) { + return $this->processLogin(); + } + } + $this->mainLoginForm( '' ); } - $wgOut->setPageTitle( wfMsg( "accmailtitle" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->setArticleRelated( false ); - - $wgOut->addWikiText( wfMsg( "accmailtext", $u->getName(), $u->getEmail() ) ); - $wgOut->returnToMain( false ); - - $u = 0; -} - + /** + * @access private + */ + function addNewAccountMailPassword() { + global $wgOut; + + if ('' == $this->mEmail) { + $this->mainLoginForm( wfMsg( 'noemail', htmlspecialchars( $this->mName ) ) ); + return; + } -/* private */ function addNewAccount() -{ - global $wgUser, $wgOut, $wpPassword, $wpRetype, $wpName, $wpRemember; - global $wpEmail, $wgDeferredUpdateList; + $u = $this->addNewaccountInternal(); - $u = addNewAccountInternal(); + if ($u == NULL) { + return; + } - if ($u == NULL) { - return; + $u->saveSettings(); + $result = $this->mailPasswordInternal($u); + + $wgOut->setPageTitle( wfMsg( 'accmailtitle' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->setArticleRelated( false ); + + if( WikiError::isError( $result ) ) { + $this->mainLoginForm( wfMsg( 'mailerror', $result->getMessage() ) ); + } else { + $wgOut->addWikiText( wfMsg( 'accmailtext', $u->getName(), $u->getEmail() ) ); + $wgOut->returnToMain( false ); + } + $u = 0; } - $wgUser = $u; - $wgUser->setCookies(); - $up = new UserUpdate(); - array_push( $wgDeferredUpdateList, $up ); + /** + * @access private + */ + function addNewAccount() { + global $wgUser, $wgOut, $wgEmailAuthentication; - if( hasSessionCookie() ) { - return successfulLogin( wfMsg( "welcomecreation", $wgUser->getName() ) ); - } else { - return cookieRedirectCheck( "new" ); - } -} + $u = $this->addNewAccountInternal(); + if ($u == NULL) { + return; + } -/* private */ function addNewAccountInternal() -{ - global $wgUser, $wgOut, $wpPassword, $wpRetype, $wpName, $wpRemember; - global $wpEmail, $wgMaxNameChars; + $wgUser = $u; + $wgUser->setCookies(); - if (!$wgUser->isAllowedToCreateAccount()) { - userNotPrivilegedMessage(); - return; - } + $wgUser->saveSettings(); + if( $wgEmailAuthentication && $wgUser->isValidEmailAddr( $wgUser->getEmail() ) ) { + $wgUser->sendConfirmationMail(); + } - if ( 0 != strcmp( $wpPassword, $wpRetype ) ) { - mainLoginForm( wfMsg( "badretype" ) ); - return; - } - $wpName = trim( $wpName ); - if ( ( "" == $wpName ) || - preg_match( "/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/", $wpName ) || - (strpos( $wpName, "/" ) !== false) || - (strlen( $wpName ) > $wgMaxNameChars) ) - { - mainLoginForm( wfMsg( "noname" ) ); - return; - } - if ( wfReadOnly() ) { - $wgOut->readOnlyPage(); - return; - } - $u = User::newFromName( $wpName ); - - if ( 0 != $u->idForName() ) { - mainLoginForm( wfMsg( "userexists" ) ); - return; + if( $this->hasSessionCookie() ) { + return $this->successfulLogin( wfMsg( 'welcomecreation', $wgUser->getName() ) ); + } else { + return $this->cookieRedirectCheck( 'new' ); + } } - $u->loadDefaultUserOptions(); - $u->addToDatabase(); - $u->setPassword( $wpPassword ); - $u->setEmail( $wpEmail ); - if ( 1 == $wpRemember ) { $r = 1; } - else { $r = 0; } - $u->setOption( "rememberpassword", $r ); - - return $u; -} - + /** + * @access private + */ + function addNewAccountInternal() { + global $wgUser, $wgOut; + global $wgUseLatin1, $wgEnableSorbs, $wgProxyWhitelist; + global $wgMemc, $wgAccountCreationThrottle, $wgDBname, $wgIP; + global $wgAuth; + + // If the user passes an invalid domain, something is fishy + if( !$wgAuth->validDomain( $this->mDomain ) ) { + $this->mainLoginForm( wfMsg( 'wrongpassword' ) ); + return false; + } + // If we are not allowing users to login locally, we should + // be checking to see if the user is actually able to + // authenticate to the authentication server before they + // create an account (otherwise, they can create a local account + // and login as any domain user). We only need to check this for + // domains that aren't local. + if( 'local' != $this->mDomain && '' != $this->mDomain ) { + if( !$wgAuth->canCreateAccounts() && ( !$wgAuth->userExists( $this->mName ) || !$wgAuth->authenticate( $this->mName, $this->mPassword ) ) ) { + $this->mainLoginForm( wfMsg( 'wrongpassword' ) ); + return false; + } + } -/* private */ function processLogin() -{ - global $wgUser, $wpName, $wpPassword, $wpRemember; - global $wgDeferredUpdateList; - global $returnto; + if (!$wgUser->isAllowedToCreateAccount()) { + $this->userNotPrivilegedMessage(); + return false; + } - if ( "" == $wpName ) { - mainLoginForm( wfMsg( "noname" ) ); - return; - } - $u = User::newFromName( $wpName ); - $id = $u->idForName(); - if ( 0 == $id ) { - mainLoginForm( wfMsg( "nosuchuser", $u->getName() ) ); - return; - } - $u->setId( $id ); - $u->loadFromDatabase(); - $ep = $u->encryptPassword( $wpPassword ); - if ( 0 != strcmp( $ep, $u->getPassword() ) ) { - if ( 0 != strcmp( $ep, $u->getNewpassword() ) ) { - mainLoginForm( wfMsg( "wrongpassword" ) ); + if ( $wgEnableSorbs && !in_array( $wgIP, $wgProxyWhitelist ) && + $wgUser->inSorbsBlacklist( $wgIP ) ) + { + $this->mainLoginForm( wfMsg( 'sorbs_create_account_reason' ) ); return; } - } - # We've verified now, update the real record - # - if ( 1 == $wpRemember ) { - $r = 1; - $u->setCookiePassword( $wpPassword ); - } else { - $r = 0; - } - $u->setOption( "rememberpassword", $r ); - $wgUser = $u; - $wgUser->setCookies(); + if ( 0 != strcmp( $this->mPassword, $this->mRetype ) ) { + $this->mainLoginForm( wfMsg( 'badretype' ) ); + return false; + } + + $name = trim( $this->mName ); + $u = User::newFromName( $name ); + if ( is_null( $u ) ) { + $this->mainLoginForm( wfMsg( 'noname' ) ); + return false; + } + + if ( wfReadOnly() ) { + $wgOut->readOnlyPage(); + return false; + } + + if ( 0 != $u->idForName() ) { + $this->mainLoginForm( wfMsg( 'userexists' ) ); + return false; + } - $up = new UserUpdate(); - array_push( $wgDeferredUpdateList, $up ); + if ( !$wgUser->isValidPassword( $this->mPassword ) ) { + $this->mainLoginForm( wfMsg( 'passwordtooshort', $wgMinimalPasswordLength ) ); + return false; + } - if( hasSessionCookie() ) { - return successfulLogin( wfMsg( "loginsuccess", $wgUser->getName() ) ); - } else { - return cookieRedirectCheck( "login" ); - } -} + if ( $wgAccountCreationThrottle ) { + $key = $wgDBname.':acctcreate:ip:'.$wgIP; + $value = $wgMemc->incr( $key ); + if ( !$value ) { + $wgMemc->set( $key, 1, 86400 ); + } + if ( $value > $wgAccountCreationThrottle ) { + $this->throttleHit( $wgAccountCreationThrottle ); + return false; + } + } + + if( !$wgAuth->addUser( $u, $this->mPassword ) ) { + $this->mainLoginForm( wfMsg( 'externaldberror' ) ); + return false; + } -/* private */ function mailPassword() -{ - global $wgUser, $wpName, $wgDeferredUpdateList, $wgOutputEncoding; - global $wgCookiePath, $wgCookieDomain, $wgDBname; + # Update user count + $ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 ); + $ssUpdate->doUpdate(); - if ( "" == $wpName ) { - mainLoginForm( wfMsg( "noname" ) ); - return; + return $this->initUser( $u ); } - $u = User::newFromName( $wpName ); - $id = $u->idForName(); - if ( 0 == $id ) { - mainLoginForm( wfMsg( "nosuchuser", $u->getName() ) ); - return; + + /** + * Actually add a user to the database. + * Give it a User object that has been initialised with a name. + * + * @param User $u + * @return User + * @access private + */ + function &initUser( &$u ) { + $u->addToDatabase(); + $u->setPassword( $this->mPassword ); + $u->setEmail( $this->mEmail ); + $u->setRealName( $this->mRealName ); + $u->setToken(); + + global $wgAuth; + $wgAuth->initUser( $u ); + + if ( $this->mRemember ) { $r = 1; } + else { $r = 0; } + $u->setOption( 'rememberpassword', $r ); + + return $u; } - $u->setId( $id ); - $u->loadFromDatabase(); - if (mailPasswordInternal($u) == NULL) { - return; - } + /** + * @access private + */ + function processLogin() { + global $wgUser; + global $wgAuth; - mainLoginForm( wfMsg( "passwordsent", $u->getName() ) ); -} + if ( '' == $this->mName ) { + $this->mainLoginForm( wfMsg( 'noname' ) ); + return; + } + $u = User::newFromName( $this->mName ); + if( is_null( $u ) ) { + $this->mainLoginForm( wfMsg( 'noname' ) ); + return; + } + if ( 0 == $u->getID() ) { + global $wgAuth; + /** + * If the external authentication plugin allows it, + * automatically create a new account for users that + * are externally defined but have not yet logged in. + */ + if ( $wgAuth->autoCreate() && $wgAuth->userExists( $u->getName() ) ) { + if ( $wgAuth->authenticate( $u->getName(), $this->mPassword ) ) { + $u =& $this->initUser( $u ); + } else { + $this->mainLoginForm( wfMsg( 'wrongpassword' ) ); + return; + } + } else { + $this->mainLoginForm( wfMsg( 'nosuchuser', $u->getName() ) ); + return; + } + } else { + $u->loadFromDatabase(); + } + if (!$u->checkPassword( $this->mPassword )) { + $this->mainLoginForm( wfMsg( 'wrongpassword' ) ); + return; + } + + # We've verified now, update the real record + # + if ( $this->mRemember ) { + $r = 1; + } else { + $r = 0; + } + $u->setOption( 'rememberpassword', $r ); -/* private */ function mailPasswordInternal( $u ) -{ - global $wpName, $wgDeferredUpdateList, $wgOutputEncoding; - global $wgPasswordSender, $wgDBname, $wgIP; + $wgAuth->updateUser( $u ); - if ( "" == $u->getEmail() ) { - mainLoginForm( wfMsg( "noemail", $u->getName() ) ); - return; + $wgUser = $u; + $wgUser->setCookies(); + + $wgUser->saveSettings(); + + if( $this->hasSessionCookie() ) { + return $this->successfulLogin( wfMsg( 'loginsuccess', $wgUser->getName() ) ); + } else { + return $this->cookieRedirectCheck( 'login' ); + } } - $np = User::randomPassword(); - $u->setNewpassword( $np ); - setcookie( "{$wgDBname}Password", "", time() - 3600, $wgCookiePath, $wgCookieDomain ); - $u->saveSettings(); + /** + * @access private + */ + function mailPassword() { + global $wgUser, $wgDeferredUpdateList, $wgOutputEncoding; + global $wgCookiePath, $wgCookieDomain, $wgDBname; - $ip = $wgIP; - if ( "" == $ip ) { $ip = "(Unknown)"; } + if ( '' == $this->mName ) { + $this->mainLoginForm( wfMsg( 'noname' ) ); + return; + } + $u = User::newFromName( $this->mName ); + if( is_null( $u ) ) { + $this->mainLoginForm( wfMsg( 'noname' ) ); + return; + } + if ( 0 == $u->getID() ) { + $this->mainLoginForm( wfMsg( 'nosuchuser', $u->getName() ) ); + return; + } - $m = wfMsg( "passwordremindertext", $ip, $u->getName(), $np ); + $u->loadFromDatabase(); - userMailer( $u->getEmail(), $wgPasswordSender, wfMsg( "passwordremindertitle" ), $m ); - - return $u; -} + $result = $this->mailPasswordInternal( $u ); + if( WikiError::isError( $result ) ) { + $this->mainLoginForm( wfMsg( 'mailerror', $result->getMessage() ) ); + } else { + $this->mainLoginForm( wfMsg( 'passwordsent', $u->getName() ) ); + } + } + /** + * @return mixed true on success, WikiError on failure + * @access private + */ + function mailPasswordInternal( $u ) { + global $wgPasswordSender, $wgDBname, $wgIP; + global $wgCookiePath, $wgCookieDomain; + if ( '' == $u->getEmail() ) { + return wfMsg( 'noemail', $u->getName() ); + } + $np = $u->randomPassword(); + $u->setNewpassword( $np ); -/* private */ function successfulLogin( $msg ) -{ - global $wgUser; - global $wgDeferredUpdateList; - global $wgOut; + setcookie( "{$wgDBname}Token", '', time() - 3600, $wgCookiePath, $wgCookieDomain ); - $wgOut->setPageTitle( wfMsg( "loginsuccesstitle" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->setArticleRelated( false ); - $wgOut->addHTML( $msg . "\n

" ); - $wgOut->returnToMain(); -} + $u->saveSettings(); -function userNotPrivilegedMessage() -{ - global $wgOut, $wgUser, $wgLang; - - $wgOut->setPageTitle( wfMsg( "whitelistacctitle" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->setArticleRelated( false ); + $ip = $wgIP; + if ( '' == $ip ) { $ip = '(Unknown)'; } - $wgOut->addWikiText( wfMsg( "whitelistacctext" ) ); - - $wgOut->returnToMain( false ); -} + $m = wfMsg( 'passwordremindertext', $ip, $u->getName(), $np ); -/* private */ function mainLoginForm( $err ) -{ - global $wgUser, $wgOut, $wgLang, $returnto; - global $wpName, $wpPassword, $wpRetype, $wpRemember; - global $wpEmail, $HTTP_COOKIE_VARS, $wgDBname; - - $le = wfMsg( "loginerror" ); - $yn = wfMsg( "yourname" ); - $yp = wfMsg( "yourpassword" ); - $ypa = wfMsg( "yourpasswordagain" ); - $rmp = wfMsg( "remembermypassword" ); - $nuo = wfMsg( "newusersonly" ); - $li = wfMsg( "login" ); - $ca = wfMsg( "createaccount" ); - $cam = wfMsg( "createaccountmail" ); - $ye = wfMsg( "youremail" ); - $efl = wfMsg( "emailforlost" ); - $mmp = wfMsg( "mailmypassword" ); - $endText = wfMsg( "loginend" ); - - - $name = $wpName; - if ( "" == $name ) { - if ( 0 != $wgUser->getID() ) { - $name = $wgUser->getName(); - } else { - $name = $HTTP_COOKIE_VARS["{$wgDBname}UserName"]; - } - } - $pwd = $wpPassword; - - $wgOut->setPageTitle( wfMsg( "userlogin" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->setArticleRelated( false ); - - if ( "" == $err ) { - $lp = wfMsg( "loginprompt" ); - $wgOut->addHTML( "

$li:

\n

$lp

" ); - } else { - $wgOut->addHTML( "

$le:

\n$err\n" ); - } - if ( 1 == $wgUser->getOption( "rememberpassword" ) ) { - $checked = " checked"; - } else { - $checked = ""; + $result = $u->sendMail( wfMsg( 'passwordremindertitle' ), $m ); + return $result; } - $q = "action=submit"; - if ( "" != $returnto ) { $q .= "&returnto=" . wfUrlencode($returnto); } - $action = wfLocalUrlE( $wgLang->specialPage( "Userlogin" ), $q ); - $wpName = wfEscapeHTML( $wpName ); - $wpPassword = wfEscapeHTML( $wpPassword ); - $wpRetype = wfEscapeHTML( $wpRetype ); - $wpEmail = wfEscapeHTML( $wpEmail ); - if ($wgUser->getID() != 0) { - $cambutton = ""; + /** + * @param string $msg Message that will be shown on success. + * @access private + */ + function successfulLogin( $msg ) { + global $wgUser; + global $wgOut; + + # Run any hooks; ignore results + + wfRunHooks('UserLoginComplete', array(&$wgUser)); + + $wgOut->setPageTitle( wfMsg( 'loginsuccesstitle' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->setArticleRelated( false ); + $wgOut->addWikiText( $msg ); + $wgOut->returnToMain(); } - $wgOut->addHTML( " -
- - - - - - - - - -"); - - if ($wgUser->isAllowedToCreateAccount()) { - -$wgOut->addHTML(" - - - - -"); + /** */ + function userNotPrivilegedMessage() { + global $wgOut; + + $wgOut->setPageTitle( wfMsg( 'whitelistacctitle' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->setArticleRelated( false ); + + $wgOut->addWikiText( wfMsg( 'whitelistacctext' ) ); + + $wgOut->returnToMain( false ); } - $wgOut->addHTML(" - -
$yn: - - - -
$yp: - - - -
 
$ypa: - -$nuo
$ye: - - - -$cambutton -
 
-

$efl
- -

-
\n" ); - $wgOut->addHTML( $endText ); -} + /** + * @access private + */ + function mainLoginForm( $err ) { + global $wgUser, $wgOut, $wgLang; + global $wgDBname, $wgAllowRealName, $wgEnableEmail; + global $wgAuth; + + if ( '' == $this->mName ) { + if ( $wgUser->isLoggedIn() ) { + $this->mName = $wgUser->getName(); + } else { + $this->mName = @$_COOKIE[$wgDBname.'UserName']; + } + } -/* private */ function hasSessionCookie() -{ - global $wgDisableCookieCheck; - return ( $wgDisableCookieCheck ) ? true : ( "" != $_COOKIE[session_name()] ); -} - -/* private */ function cookieRedirectCheck( $type ) -{ - global $wgOut, $wgLang; + $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(); + + $template->set( 'name', $this->mName ); + $template->set( 'password', $this->mPassword ); + $template->set( 'retype', $this->mRetype ); + $template->set( 'email', $this->mEmail ); + $template->set( 'realname', $this->mRealName ); + $template->set( 'domain', $this->mDomain ); + + $template->set( 'action', $titleObj->getLocalUrl( $q ) ); + $template->set( 'error', $err ); + $template->set( 'create', $wgUser->isAllowedToCreateAccount() ); + $template->set( 'createemail', $wgEnableEmail && $wgUser->isLoggedIn() ); + $template->set( 'userealname', $wgAllowRealName ); + $template->set( 'useemail', $wgEnableEmail ); + $template->set( 'remember', $wgUser->getOption( 'rememberpassword' ) or $this->mRemember ); + $wgAuth->modifyUITemplate( $template ); + + $wgOut->setPageTitle( wfMsg( 'userlogin' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->setArticleRelated( false ); + $wgOut->addTemplate( $template ); + } - $check = wfLocalUrl( wfUrlEncode( $wgLang->specialPage( "Userlogin" ) ), - "wpCookieCheck=$type" ); + /** + * @access private + */ + function hasSessionCookie() { + global $wgDisableCookieCheck; + return ( $wgDisableCookieCheck ) ? true : ( isset( $_COOKIE[session_name()] ) ); + } + + /** + * @access private + */ + function cookieRedirectCheck( $type ) { + global $wgOut, $wgLang; - return $wgOut->redirect( $check ); -} + $titleObj = Title::makeTitle( NS_SPECIAL, 'Userlogin' ); + $check = $titleObj->getFullURL( 'wpCookieCheck='.$type ); -/* private */ function onCookieRedirectCheck( $type ) { - global $wgUser; + return $wgOut->redirect( $check ); + } - if ( !hasSessionCookie() ) { - if ( $type == "new" ) { - return mainLoginForm( wfMsg( "nocookiesnew" ) ); - } else if ( $type == "login" ) { - return mainLoginForm( wfMsg( "nocookieslogin" ) ); + /** + * @access private + */ + function onCookieRedirectCheck( $type ) { + global $wgUser; + + if ( !$this->hasSessionCookie() ) { + if ( $type == 'new' ) { + return $this->mainLoginForm( wfMsg( 'nocookiesnew' ) ); + } else if ( $type == 'login' ) { + return $this->mainLoginForm( wfMsg( 'nocookieslogin' ) ); + } else { + # shouldn't happen + return $this->mainLoginForm( wfMsg( 'error' ) ); + } } else { - # shouldn't happen - return mainLoginForm( wfMsg( "error" ) ); + return $this->successfulLogin( wfMsg( 'loginsuccess', $wgUser->getName() ) ); } - } else { - return successfulLogin( wfMsg( "loginsuccess", $wgUser->getName() ) ); } -} + /** + * @access private + */ + function throttleHit( $limit ) { + global $wgOut; + + $wgOut->addWikiText( wfMsg( 'acct_creation_throttle_hit', $limit ) ); + } +} ?>