API:Limiter l'utilisation de l'API

This page is a translated version of the page API:Restricting API usage and the translation is 100% complete.

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.

Restreindre l'accès à l'API Write

Vous pouvez refuser à certains groupes le droit d'utiliser l'API Write en leur refusant le droit writeapi. Par défaut, tous les groupes possèdent le droit writeapi.


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 le point d'entrée suivant à ApiCheckCanExecute  :

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

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