API:Ограничение использования
![]() | Эта страница является частью документации по API действий MediaWiki. |
Существует несколько способов ограничить определёнными группами участников использование (определённых частей) API, или даже отключить API вообще. Некоторые из них требуют изменения прав групп участников.
Отключение всего API
Вы можете отключить API целиком, задав $EnableAPI в $LocalSettings. По умолчанию API включен.
Отключение API записи
Вы можете отключить все модули запись, задав $wgEnableWriteAPI = false;
в LocalSettings.php.
API записи включён по умолчанию, начиная с MediaWiki 1.14, и выключен по умолчанию в более ранних версиях.
Ограничение доступа к 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( 'right', $user->getRights() )
) {
$message = 'apierror-action-notallowed';
return false;
}
return true;
}
Замените 'action'
, 'group'
и 'apierror-action-notallowed'
необходимыми для вас значениями.