MediaWiki  master
LoginHelper.php
Go to the documentation of this file.
1 <?php
2 
8 class LoginHelper extends ContextSource {
21  public static $validErrorMessages = [
22  'exception-nologin-text',
23  'watchlistanontext',
24  'changeemail-no-info',
25  'resetpass-no-info',
26  'confirmemail_needlogin',
27  'prefsnologintext2',
28  'specialmute-login-required',
29  ];
30 
37  public static function getValidErrorMessages() {
38  static $messages = null;
39  if ( !$messages ) {
40  $messages = self::$validErrorMessages;
41  Hooks::run( 'LoginFormValidErrorMessages', [ &$messages ] );
42  }
43 
44  return $messages;
45  }
46 
47  public function __construct( IContextSource $context ) {
48  $this->setContext( $context );
49  }
50 
64  public function showReturnToPage(
65  $type, $returnTo = '', $returnToQuery = '', $stickHTTPS = false
66  ) {
67  $config = $this->getConfig();
68  if ( $type !== 'error' && $config->get( 'RedirectOnLogin' ) !== null ) {
69  $returnTo = $config->get( 'RedirectOnLogin' );
70  $returnToQuery = [];
71  } elseif ( is_string( $returnToQuery ) ) {
72  $returnToQuery = wfCgiToArray( $returnToQuery );
73  }
74 
75  // Allow modification of redirect behavior
76  Hooks::run( 'PostLoginRedirect', [ &$returnTo, &$returnToQuery, &$type ] );
77 
78  $returnToTitle = Title::newFromText( $returnTo ) ?: Title::newMainPage();
79 
80  if ( $config->get( 'SecureLogin' ) && !$stickHTTPS ) {
81  $options = [ 'http' ];
82  $proto = PROTO_HTTP;
83  } elseif ( $config->get( 'SecureLogin' ) ) {
84  $options = [ 'https' ];
85  $proto = PROTO_HTTPS;
86  } else {
87  $options = [];
88  $proto = PROTO_RELATIVE;
89  }
90 
91  if ( $type === 'successredirect' ) {
92  $redirectUrl = $returnToTitle->getFullUrlForRedirect( $returnToQuery, $proto );
93  $this->getOutput()->redirect( $redirectUrl );
94  } else {
95  $this->getOutput()->addReturnTo( $returnToTitle, $returnToQuery, null, $options );
96  }
97  }
98 }
setContext(IContextSource $context)
static newMainPage(MessageLocalizer $localizer=null)
Create a new Title for the Main Page.
Definition: Title.php:648
The simplest way of implementing IContextSource is to hold a RequestContext as a member variable and ...
IContextSource $context
const PROTO_HTTPS
Definition: Defines.php:200
wfCgiToArray( $query)
This is the logical opposite of wfArrayToCgi(): it accepts a query string as its argument and returns...
const PROTO_RELATIVE
Definition: Defines.php:201
Helper functions for the login form that need to be shared with other special pages (such as CentralA...
Definition: LoginHelper.php:8
const PROTO_HTTP
Definition: Defines.php:199
static string [] $validErrorMessages
Valid error and warning messages.
Definition: LoginHelper.php:21
showReturnToPage( $type, $returnTo='', $returnToQuery='', $stickHTTPS=false)
Show a return link or redirect to it.
Definition: LoginHelper.php:64
static getValidErrorMessages()
Returns an array of all valid error messages.
Definition: LoginHelper.php:37
__construct(IContextSource $context)
Definition: LoginHelper.php:47
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
Definition: Title.php:319