wiki.techinc.nl/includes/resourceloader/ResourceLoaderUserTokensModule.php
Timo Tijhof 298cf413db mediawiki.api: Use action=query&meta=tokens instead of action=tokens
Follows-up aacdb664a1, which was reverted.

API action=query&meta=tokens has different token types than the old
action=tokens values. Use a map to maintain support in the JavaScript API for
old token types that now fold into the generic 'csrf'.

Aside from core token types, those added by extensions are no longer
actively used from the old token API.

Bug: T72059
Change-Id: Iec3a9f0f51d64d90c81a147cc18097dcf679c7c9
2015-11-18 17:58:21 +00:00

84 lines
2.2 KiB
PHP

<?php
/**
* ResourceLoader module for user tokens.
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* 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.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @author Krinkle
*/
/**
* Module for user tokens
*/
class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
/* Protected Members */
protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
protected $targets = array( 'desktop', 'mobile' );
/* Methods */
/**
* Fetch the tokens for the current user.
*
* @param ResourceLoaderContext $context
* @return array List of tokens keyed by token type
*/
protected function contextUserTokens( ResourceLoaderContext $context ) {
$user = $context->getUserObj();
return array(
'editToken' => $user->getEditToken(),
'patrolToken' => $user->getEditToken( 'patrol' ),
'watchToken' => $user->getEditToken( 'watch' ),
'csrfToken' => $user->getEditToken(),
);
}
/**
* Generate the JavaScript content of this module.
*
* Add '@nomin' annotation to prevent the module's contents from getting
* cached (T84960).
*
* @param ResourceLoaderContext $context
* @return string
*/
public function getScript( ResourceLoaderContext $context ) {
return Xml::encodeJsCall(
'mw.user.tokens.set',
array( $this->contextUserTokens( $context ) ),
ResourceLoader::inDebugMode()
) . ResourceLoader::FILTER_NOMIN;
}
/**
* @return bool
*/
public function supportsURLLoading() {
return false;
}
/**
* @return string
*/
public function getGroup() {
return 'private';
}
}