]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blobdiff - includes/api/ApiLogout.php
MediaWiki 1.30.2-scripts2
[autoinstalls/mediawiki.git] / includes / api / ApiLogout.php
index 0af579cac2cda15379afff939c8ab25f6559a338..092b5e156f5420615d5b641230a3a6c732cb4710 100644 (file)
@@ -1,11 +1,10 @@
 <?php
-
-/*
- * Created on Jan 4, 2008
+/**
  *
- * API for MediaWiki 1.8+
  *
- * Copyright (C) 2008 Yuri Astrakhan <Firstname><Lastname>@gmail.com,
+ * Created on Jan 4, 2008
+ *
+ * Copyright © 2008 Yuri Astrakhan "<Firstname><Lastname>@gmail.com",
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  * You should have received a copy of the GNU General Public License along
  * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
  */
 
-if (!defined('MEDIAWIKI')) {
-       // Eclipse helper - will be ignored in production
-       require_once ('ApiBase.php');
-}
+use MediaWiki\Session\BotPasswordSessionProvider;
 
 /**
  * API module to allow users to log out of the wiki. API equivalent of
@@ -36,45 +34,59 @@ if (!defined('MEDIAWIKI')) {
  */
 class ApiLogout extends ApiBase {
 
-       public function __construct($main, $action) {
-               parent :: __construct($main, $action);
-       }
-
        public function execute() {
-               global $wgUser;
-               $oldName = $wgUser->getName();
-               $wgUser->logout();
-               
+               $session = MediaWiki\Session\SessionManager::getGlobalSession();
+
+               // Handle bot password logout specially
+               if ( $session->getProvider() instanceof BotPasswordSessionProvider ) {
+                       $session->unpersist();
+                       return;
+               }
+
+               // Make sure it's possible to log out
+               if ( !$session->canSetUser() ) {
+                       $this->dieWithError(
+                               [
+                                       'cannotlogoutnow-text',
+                                       $session->getProvider()->describe( $this->getErrorFormatter()->getLanguage() )
+                               ],
+                               'cannotlogout'
+                       );
+               }
+
+               $user = $this->getUser();
+               $oldName = $user->getName();
+               $user->logout();
+
                // Give extensions to do something after user logout
                $injected_html = '';
-               wfRunHooks( 'UserLogoutComplete', array(&$wgUser, &$injected_html, $oldName) );
+               Hooks::run( 'UserLogoutComplete', [ &$user, &$injected_html, $oldName ] );
        }
 
-       public function isReadMode() {
-               return false;
+       public function mustBePosted() {
+               return true;
        }
 
-       public function getAllowedParams() {
-               return array ();
+       public function needsToken() {
+               return 'csrf';
        }
 
-       public function getParamDescription() {
-               return array ();
+       protected function getWebUITokenSalt( array $params ) {
+               return 'logoutToken';
        }
 
-       public function getDescription() {
-               return array (
-                       'This module is used to logout and clear session data'
-               );
+       public function isReadMode() {
+               return false;
        }
 
-       protected function getExamples() {
-               return array(
-                       'api.php?action=logout'
-               );
+       protected function getExamplesMessages() {
+               return [
+                       'action=logout&token=123ABC'
+                               => 'apihelp-logout-example-logout',
+               ];
        }
 
-       public function getVersion() {
-               return __CLASS__ . ': $Id: ApiLogout.php 48091 2009-03-06 13:49:44Z catrope $';
+       public function getHelpUrls() {
+               return 'https://www.mediawiki.org/wiki/Special:MyLanguage/API:Logout';
        }
 }