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 • ‎русский • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

Существует несколько способов ограничить определёнными группами участников использование (определённых частей) API, или даже отключить API вообще. Некоторые из них требуют изменения прав групп участников.

Отключение всего API

Вы можете отключить API целиком, задав $wgEnableAPI = false; в LocalSettings.php . По умолчанию API включен.

С версии MediaWiki 1.31.0 эта настройка считается устаревшей и будет удалена в последующих версиях. Это означает, что отключение API перестанет быть возможным.

Отключение API записи

Вы можете отключить все модули запись, задав $wgEnableWriteAPI = false; в LocalSettings.php. API записи включён по умолчанию, начиная с MediaWiki 1.14, и выключен по умолчанию в более ранних версиях.

С версии MediaWiki 1.31.0 эта настройка считается устаревшей и будет удалена в последующих версиях. Это означает, что отключение API для записи перестанет быть возможным.

Ограничение доступа к API записи

Вы можете запретить определённым группам участников использовать API записи, не давая им права writeapi. По умолчанию, все группы имеют право writeapi. Но и право writeapi, и $wgEnableWriteAPI = true; требуются, чтобы использовать API записи.

Отключение модулей

Вы можете отключить отдельные модули для всех пользователей, добавив строку в LocalSettings.php. Что конкретно добавить, зависит от типа модуля, который вы хотите отключить:

  • Для модулей action=, используйте $wgAPIModules ['modulename'] = 'ApiDisabled';
  • Для модулей prop=, используйте $wgAPIPropModules ['modulename'] = 'ApiQueryDisabled';
  • Для модулей list=, используйте $wgAPIListModules ['modulename'] = 'ApiQueryDisabled';
  • Для модулей meta=, используйте $wgAPIMetaModules ['modulename'] = 'ApiQueryDisabled';

Пример

Чтобы запретить всем, кроме администраторов, использование action=edit:

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

Чтобы ограничить доступ к действию API, добавьте к 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;
}

Замените 'action', 'group' и 'apierror-action-notallowed' необходимыми для вас значениями.