/** * Add a "return to" link or redirect to it. * Extensions can use this to reuse the "return to" logic after * inject steps (such as redirection) into the login process. * * @param string $type One of the following: * - error: display a return to link ignoring $wgRedirectOnLogin * - signup: display a return to link using $wgRedirectOnLogin if needed * - success: display a return to link using $wgRedirectOnLogin if needed * - successredirect: send an HTTP redirect using $wgRedirectOnLogin if needed * @param string $returnTo * @param array|string $returnToQuery * @param bool $stickHTTPS Keep redirect link on HTTPS * @since 1.22 */ public function showReturnToPage($type, $returnTo = '', $returnToQuery = '', $stickHTTPS = false) { $helper = new LoginHelper($this->getContext()); $helper->showReturnToPage($type, $returnTo, $returnToQuery, $stickHTTPS); }
/** * Run any hooks registered for logins, then HTTP redirect to * $this->mReturnTo (or Main Page if that's undefined). Formerly we had a * nice message here, but that's really not as useful as just being sent to * wherever you logged in from. It should be clear that the action was * successful, given the lack of error messages plus the appearance of your * name in the upper right. * @param bool $direct True if the action was successful just now; false if that happened * pre-redirection (so this handler was called already) * @param StatusValue|null $extraMessages */ protected function successfulAction($direct = false, $extraMessages = null) { global $wgSecureLogin; $user = $this->targetUser ?: $this->getUser(); $session = $this->getRequest()->getSession(); if ($direct) { $user->touch(); $this->clearToken(); if ($user->requiresHTTPS()) { $this->mStickHTTPS = true; } $session->setForceHTTPS($wgSecureLogin && $this->mStickHTTPS); // If the user does not have a session cookie at this point, they probably need to // do something to their browser. if (!$this->hasSessionCookie()) { $this->mainLoginForm([], $session->getProvider()->whyNoSession()); // TODO something more specific? This used to use nocookieslogin return; } } # Run any hooks; display injected HTML if any, else redirect $injected_html = ''; Hooks::run('UserLoginComplete', [&$user, &$injected_html]); if ($injected_html !== '' || $extraMessages) { $this->showSuccessPage('success', $this->msg('loginsuccesstitle'), 'loginsuccess', $injected_html, $extraMessages); } else { $helper = new LoginHelper($this->getContext()); $helper->showReturnToPage('successredirect', $this->mReturnTo, $this->mReturnToQuery, $this->mStickHTTPS); } }