/**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * 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);
     }
 }