API:Limiter l'utilisation de l'API

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Restricting API usage and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎polski • ‎русский • ‎ไทย • ‎中文 • ‎日本語

Il existe plusieurs façons de limiter l’utilisation de (certaines parties de) l’API à certains groupes d’utilisateurs ou de la désactiver complètement. Certaines d'entre elles nécessitent de modifer les permissions du groupe.

Désactiver l'intégralité de l'API

Vous pouvez désactiver l'API dans son ensemble en définissant $wgEnableAPI = false; dans LocalSettings.php . L'API est activée par défaut.

Ce paramètre de configuration est obsolète à partir de MediaWiki 1.31.0 et sera supprimé dans les versions suivantes, ce qui signifie que la désactivation de l'API ne sera plus possible.

Désactiver l'écriture par l'API

Vous pouvez désactiver tous les modules d'écriture en initialisant $wgEnableWriteAPI = false; dans LocalSettings.php. Les écritures de l'API sont activées par défaut depuis MediaWiki 1.14, et désactivées par défaut dans les versions plus anciennes.

Ce paramètre de configuration est obsolète depuis MediaWiki 1.31.0 et sera retiré des prochaines versions ce qui signifie que la désactivation des écritures de l'API ne sera plus possible.

Restreindre l'accès à l'API en écriture

Vous pouvez refuser à certains groupes le droit d'utiliser l'API en écriture en leur refusant le droit writeapi. Par défaut, tous les groupes possèdent le droit writeapi. Néanmoins, à la fois le droit writeapi et $wgEnableWriteAPI = true; sont nécessaires pour pouvoir utiliser l'API en écriture.

Désactiver les modules

Vous pouvez désactiver les modules individuels pour tous les utilisateurs en ajoutant une ligne à LocalSettings.php. Ce que vous ajoutez dépend exactement du type de module que vous voulez désactiver :

  • Pour les modules action= , utilisez $wgAPIModules ['modulename'] = 'ApiDisabled';
  • Pour les modules prop= , utilisez $wgAPIPropModules ['modulename'] = 'ApiQueryDisabled';
  • Pour les modules list= , utilisez $wgAPIListModules ['modulename'] = 'ApiQueryDisabled';
  • Pour les modules meta= , utilisez $wgAPIMetaModules ['modulename'] = 'ApiQueryDisabled';

Exemples

Pour désactiver l'utilisation de action=edit à quiconque n'étant pas administrateur :

if ( !in_array( 'sysop', $wgUser->getGroups() ) ) {
	$wgAPIModules['edit'] = 'ApiDisabled';
}

Pour limiter l'accès à une action d'API, ajoutez l'accroche suivante à ApiCheckCanExecute :

static function onApiCheckCanExecute( $module, $user, &$message ) {
    $moduleName = $module->getModuleName();
    if (
        $moduleName == 'action' &&
        !in_array( 'group', $user->getGroups() )
    ) {
        $message = 'apierror-action-notallowed';
        return false;
    }
    return true;
}

Remplacez 'action', 'group' et 'apierror-action-notallowed' par les valeurs appropriées.