private function clearClosureRequest() { global $wgEnableCloseMyAccountExt; if (!empty($wgEnableCloseMyAccountExt)) { $closeAccountHelper = new CloseMyAccountHelper(); $result = $closeAccountHelper->reactivateAccount($this->mUser); if (!$result) { $this->mStatusMsg = $this->msg('editaccount-error-clearclosurerequest')->text(); } else { $this->mStatusMsg = $this->msg('editaccount-success-clearclosurerequest', $this->mUser->getName())->text(); } return $result; } return true; }
/** * Entry point for reactivating an account * * Handles confirming the user's reactivation request when they have * given a valid confirmation code. If no code is given, but they have * a session ID from having successfully attempted to login to an account * that has requested closure, this forwards to the reactivateRequest * method. * * @requestParam string code - The confirmation code for reactivating an account * @requestParam string username - The user name of the account to reactivate * @requestParam string password - The password for the account to reactivate * @requestParam string editToken - The edit token for the current user * @requestParam string loginToken - The login token for the current user * @responseParam boolean success - Whether or not reactivation was successful * @responseParam string resultMessage - The result of the form submission * @responseParam string errParam - The form item an error is related to * @return void */ public function reactivate() { wfProfileIn(__METHOD__); $this->code = $this->getVal('code', false); if (empty($this->code)) { if ($this->request->getSessionData('closeAccountSessionId') !== null) { $this->forward(__CLASS__, 'reactivateRequest'); } else { $this->success = false; $this->resultMessage = $this->msg('closemyaccount-reactivate-error-empty-code')->parse(); } wfProfileOut(__METHOD__); return; } $this->getOutput()->setPageTitle($this->msg('closemyaccount-reactivate-page-title')->plain()); $this->response->addAsset('extensions/wikia/UserLogin/css/UserLogin.scss'); $user = $this->getUser(); $this->username = $this->request->getVal('username', ''); $this->password = $this->request->getVal('password', ''); $this->loginToken = UserLoginHelper::getLoginToken(); $this->editToken = $user->getEditToken(); $helper = new CloseMyAccountHelper(); if ($this->request->wasPosted() && $user->matchEditToken($this->request->getVal('editToken'))) { if ($user->isAnon() && $this->request->getVal('loginToken') !== UserLoginHelper::getLoginToken()) { $this->success = false; $this->resultMessage = $this->msg('sessionfailure')->escaped(); wfProfileOut(__METHOD__); return; } if ($this->username === '') { $this->success = false; $this->resultMessage = $this->msg('userlogin-error-noname')->escaped(); $this->errParam = 'username'; wfProfileOut(__METHOD__); return; } if ($this->password === '') { $this->success = false; $this->resultMessage = $this->msg('userlogin-error-wrongpasswordempty')->escaped(); $this->errParam = 'password'; wfProfileOut(__METHOD__); return; } $expUser = User::newFromConfirmationCode($this->code); if (!$expUser instanceof User) { $this->success = false; $this->resultMessage = $this->msg('closemyaccount-reactivate-error-invalid-code', $this->username)->parse(); wfProfileOut(__METHOD__); return; } $user = User::newFromName($this->username); if ($user->getId() != $expUser->getId()) { $this->success = false; $this->resultMessage = $this->msg('wikiaconfirmemail-error-user-not-match')->parse(); $this->errParam = 'username'; wfProfileOut(__METHOD__); return; } $userLoginHelper = new UserLoginHelper(); /* @var UserLoginHelper $userLoginHelper */ if ($userLoginHelper->isPasswordThrottled($this->username)) { $this->success = false; $this->resultMessage = $this - msg('userlogin-error-login-throttled')->escaped(); $this->errParam = 'password'; wfProfileOut(__METHOD__); return; } if ($helper->isClosed($user)) { $this->success = false; $this->resultMessage = $this->msg('closemyaccount-reactivate-error-disabled')->parse(); wfProfileOut(__METHOD__); return; } if (!$helper->isScheduledForClosure($user)) { $this->success = false; $this->resultMessage = $this->msg('closemyaccount-reactivate-error-not-scheduled')->escaped(); wfProfileOut(__METHOD__); return; } if ($user->checkPassword($this->password)) { $this->wg->User = $user; $this->wg->User->setCookies(); LoginForm::clearLoginToken(); $userLoginHelper->clearPasswordThrottle($this->username); $helper->reactivateAccount($user); unset($_SESSION['closeAccountSessionId']); $userPageTitle = $user->getUserPage(); $this->getOutput()->redirect($userPageTitle->getFullURL()); } else { $this->success = false; $this->resultMessage = $this->msg('userlogin-error-wrongpassword')->escaped(); $this->errParam = 'password'; } } wfProfileOut(__METHOD__); }