MediaWiki  master
ApiLogout.php
Go to the documentation of this file.
1 <?php
24 
31 class ApiLogout extends ApiBase {
32 
33  public function execute() {
35 
36  // Handle bot password logout specially
37  if ( $session->getProvider() instanceof BotPasswordSessionProvider ) {
38  $session->unpersist();
39  return;
40  }
41 
42  // Make sure it's possible to log out
43  if ( !$session->canSetUser() ) {
44  $this->dieWithError(
45  [
46  'cannotlogoutnow-text',
47  $session->getProvider()->describe( $this->getErrorFormatter()->getLanguage() )
48  ],
49  'cannotlogout'
50  );
51  }
52 
53  $user = $this->getUser();
54  $oldName = $user->getName();
55  $user->logout();
56 
57  // Give extensions to do something after user logout
58  $injected_html = '';
59  $this->getHookRunner()->onUserLogoutComplete( $user, $injected_html, $oldName );
60  }
61 
62  public function mustBePosted() {
63  return true;
64  }
65 
66  public function needsToken() {
67  return 'csrf';
68  }
69 
70  protected function getWebUITokenSalt( array $params ) {
71  return 'logoutToken';
72  }
73 
74  public function isReadMode() {
75  return false;
76  }
77 
78  protected function getExamplesMessages() {
79  return [
80  'action=logout&token=123ABC'
81  => 'apihelp-logout-example-logout',
82  ];
83  }
84 
85  public function getHelpUrls() {
86  return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Logout';
87  }
88 }
ApiLogout\getExamplesMessages
getExamplesMessages()
Returns usage examples for this module.
Definition: ApiLogout.php:78
MediaWiki\Session\Session\BotPasswordSessionProvider
Session provider for bot passwords.
Definition: BotPasswordSessionProvider.php:34
ApiBase\dieWithError
dieWithError( $msg, $code=null, $data=null, $httpCode=null)
Abort execution with an error.
Definition: ApiBase.php:1382
ApiLogout\getWebUITokenSalt
getWebUITokenSalt(array $params)
Fetch the salt used in the Web UI corresponding to this module.
Definition: ApiLogout.php:70
ContextSource\getUser
getUser()
Stable to override.
Definition: ContextSource.php:131
ApiLogout
API module to allow users to log out of the wiki.
Definition: ApiLogout.php:31
ApiBase
This abstract class implements many basic API functions, and is the base of all API classes.
Definition: ApiBase.php:52
ApiLogout\execute
execute()
Evaluates the parameters, performs the requested query, and sets up the result.
Definition: ApiLogout.php:33
ApiLogout\isReadMode
isReadMode()
Indicates whether this module requires read rights Stable to override.
Definition: ApiLogout.php:74
ApiLogout\mustBePosted
mustBePosted()
Indicates whether this module must be called with a POST request Stable to override.
Definition: ApiLogout.php:62
MediaWiki\Session\SessionManager\getGlobalSession
static getGlobalSession()
Get the "global" session.
Definition: SessionManager.php:114
ApiLogout\getHelpUrls
getHelpUrls()
Return links to more detailed help pages about the module.
Definition: ApiLogout.php:85
ApiBase\getHookRunner
getHookRunner()
Get an ApiHookRunner for running core API hooks.
Definition: ApiBase.php:662
ApiLogout\needsToken
needsToken()
Returns the token type this module requires in order to execute.
Definition: ApiLogout.php:66