Extension:Lockdown/ru

Справка по расширениям MediaWiki
OOjs UI icon advanced.svg
Lockdown
Статус релиза: стабильный
Реализация Права пользователя
Описание Управление доступом групп участников по пространствам имён
Автор(ы) Daniel Kinzler (Duesentriebtalk)
MediaWiki 1.31+
PHP 5.5+
Изменения БД Нет
Лицензия GNU General Public License 2.0 or later
Загрузка
README

  • $wgNamespacePermissionLockdown
  • $wgSpecialPageLockdown
  • $wgActionLockdown
Переведите расширение Lockdown если оно доступно на translatewiki.net
Проверьте использование и версию.
Проблемы Открытые задачи · Сообщить об ошибке

Lockdown — расширение, позволяющее ограничивать доступ участников к определённым пространствам имён и служебным страницам с использованием механизма групп участников. Расширение позволяет более тонко управлять доступом к страницам, чем при помощи имеющихся в ядре настроек Manual:$wgGroupPermissions/ru и Manual:$wgNamespaceProtection/ru. Настройка прав доступа производится на стороне сервера.

Чтоб лучше понять, как работает это расширение и как его настраивать, вы можете прочитать следующие статьи о стандартных настройках безопасности MediaWiki:

InstallingEdit

  • Скачайте и распакуйте файл(ы) в папку с названием Lockdown в вашей папке extensions/.
  • Добавьте следующие строки в конец файла LocalSettings.php:
    wfLoadExtension( 'Lockdown' );
    
  • Configure as required
  •   Готово – Перейдите на страницу Special:Version на своей вики, чтобы удостовериться в том, что расширение успешно установлено.
Due to issues (see also this topic) this extension seems not to work as expected with MediaWiki 1.27.x to 1.30.x. These issues have however been resolved for MediaWiki 1.31 and later!

ExampleEdit

To use Lockdown to

  • prevent access to Special:Export to logged in users (registered user) ; and
  • restrict editing of the project namespace to logged in users (registered users),

you can then use the following:

$wgSpecialPageLockdown['Export'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'user' ];

См. ниже пояснения и другие примеры.

НастройкаEdit

Имейте ввиду, что это расширение может быть использовано только для ограничения доступа, оно не может применяться для разрешения. Если доступ запрещён при помощи стандартных средств MediaWiki, он не может быть разрешён при помощи расширения Lockdown.

$wgSpecialPageLockdownEdit

$wgSpecialPageLockdown позволяет ограничить доступ к любой из служебных страниц для определённых групп участников. Например, чтобы разрешить использовать Special:Export только зарегистрированным пользователям, добавьте следующий код в LocalSettings.php:

$wgSpecialPageLockdown['Export'] = [ 'user' ];

Note that some special pages "natively" require a specific permission. For example, Special:MovePage, which can be used to move pages, requires the "move" permission (granted only to logged-in users per default). This restriction can not be overridden using the Lockdown extension.

Some special page titles are not capitalized the way they appear on-wiki. For instance, Special:RecentChanges is Recentchanges internally, so to restrict it you need:

$wgSpecialPageLockdown['Recentchanges'] = [ 'user' ];

A full list of special page titles is available in the "MessagesEn.php" file ($specialPageAliases array)

$wgActionLockdownEdit

$wgActionLockdown позволяет ограничить доступ к определённым действиям для некоторых групп участников. Например, чтобы разрешить просматривать историю версий только зарегистрированным участникам, добавьте следующий код в LocalSettings.php:

$wgActionLockdown['history'] = [ 'user' ];

Доступ к некоторым действиям не может быть запрещён при помощи этой настройки. В частности, она не будет работать для действий, связанных с ajax.

$wgNamespacePermissionLockdownEdit

$wgNamespacePermissionLockdown позволяет изменить права доступа к определённому пространству имён. Например, чтобы разрешить только администраторам править пространство имён проекта, используйте следующий код:

$wgNamespacePermissionLockdown[NS_PROJECT]['edit'] = [ 'sysop' ];

Поддерживаются маски для пространства имён или разрешения (но не для них одновременно). Например, работает следующий код:

$wgNamespacePermissionLockdown[NS_PROJECT]['*'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ '*' ];

$wgNamespacePermissionLockdown['*']['move'] = [ 'autoconfirmed' ];

Первые две строки разрешают все действия в пространстве имён проекта только администраторам, кроме права их просматривать. Третья строка разрешает переименовывать страницы только автоподтверждённым участникам.

При помощи этого расширения нельзя присвоить новые права, не разрешённые при помощи стандартной настройки $wgGroupPermissions. Следующая строка не позволит всем участникам патрулировать правки в основном пространстве имён:

$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

Вместо этого, вы должны сначала присвоить эти права при помощи $wgGroupPermissions, и только затем ограничить их использование при помощи $wgNamespacePermissionLockdown:

  $wgGroupPermissions['user']['patrol'] = true;

$wgNamespacePermissionLockdown['*']['patrol'] = [ 'sysop' ];
$wgNamespacePermissionLockdown[NS_MAIN]['patrol'] = [ 'user' ];

Обратите внимание, что при ограничении чтения определённого пространства имён, это ограничение можно легко обойти, если участник имеет доступ к редактированию любого другого пространства имён: при включении защищённой страницы в качестве шаблона она страновится видимой. Чтобы предотвратить это, вы должны запретить включение страниц из этого пространства имён в другие страницы, добавив ID этого пространства имён в $wgNonincludableNamespaces (эта возможность добавлена в 1.10, ревизии 19934, и доступна в виде расширения для более ранних версий):

$wgNamespacePermissionLockdown[NS_PROJECT]['read'] = [ 'user' ];
  $wgNonincludableNamespaces[] = NS_PROJECT;

Вы также можете использовать Lockdown с дополнительными пространствами имён, определяемыми при помощи $wgExtraNamespaces:

// определение собственных пространств имён
$wgExtraNamespaces[100] = 'Private';
$wgExtraNamespaces[101] = 'Private_talk';

// ограничение разрешения «read» для залогиненных пользователей
$wgNamespacePermissionLockdown[100]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[101]['read'] = [ 'user' ];

// предотвращение включения страниц из этого пространства имён
$wgNonincludableNamespaces[] = 100;
$wgNonincludableNamespaces[] = 101;

Собственные пространства имён всегда должны добавляться парами: пространство имён (с чётным ID) и связанное с ним пространство обсуждения (с нечётным ID).

Если вы хотите использовать константы для обозначения ваших пространств имён, вы должны определить их:

// определение констант для собственных пространств имён для расширенной настройки
define('NS_PRIVATE', 100);
define('NS_PRIVATE_TALK', 101);

// определение собственных пространств имён
$wgExtraNamespaces[NS_PRIVATE] = 'Private';
$wgExtraNamespaces[NS_PRIVATE_TALK] = 'Private_talk';

// ограничение разрешения «read» для залогиненных пользователей
$wgNamespacePermissionLockdown[NS_PRIVATE]['read'] = [ 'user' ];
$wgNamespacePermissionLockdown[NS_PRIVATE_TALK]['read'] = [ 'user' ];

// предотвращение включения страниц из этого пространства имён
$wgNonincludableNamespaces[] = NS_PRIVATE;
$wgNonincludableNamespaces[] = NS_PRIVATE_TALK;

You could also use array_fill() to restrict multiple namespaces at once, e.g. if you wanted to restrict namespaces 0 to 2009 to editing by sysops only:

$wgNamespacePermissionLockdown = array_fill( 0, 2010, [  'edit' => [ 'sysop'  ] ] );

Управление группамиEdit

Вы можете управлять группами участников вики-проекта при помощи страницы Special:Userrights. С её помощью можно присвоить только существующие группы, чтобы создать новую группу, вы должны добавить запись о ней с использованием $wgGroupPermissions (даже если вам не надо устанавливать здесь разрешения, оно должно быть помещено в левой части массива). Например:

$wgGroupPermissions['somegroupname']['read'] = true;

For more information, see Help:User rights, Manual:User rights, and Manual:User rights management.

Additional measuresEdit

Images and other uploaded files

Images and other uploaded files still can be seen and included on any page. Protections on the Image namespace do not prevent that. See Manual:Image Authorisation for information on how to prevent unauthorized access to images. See also:

Known issuesEdit

Lockdown is known to be broken for MW 1.27.x to 1.30.x [1]. Possible side-effects of using it include:

  • Incomplete list of namespaces showing under the Advanced tab of Special:Search and on the special page for ReplaceText
  • Searchbox no longer offering autocompletion for certain namespaces

A workaround may be to list all namespaces under $wgContentNamespaces , but success is not guaranteed. Another temporary solution is to use a version before the breaking commits, as detailed in Topic:Tr4xxpln3fnpz3eu.

See alsoEdit