MediaWiki/Ограничение доступа
Читайте также:
- MediaWiki - общая статья об установке и настройке MediaWiki
- MediaWiki/Wiki family (farm) - основная статья о создании фермы вики на движке MediaWiki.
В движке MediaWiki средства ограничения доступа очень скудны, так как он проектировался и развивается как движок для общедоступных вики.
О настройках уровня доступа можно почитать в статье Preventing access и в других, на которые она ссылается.
Список групп, список уровней доступа и настройки доступа по умолчанию перечислены в статье User rights.
В MediaWiki группы имеют смысл ролей назначаемых пользователям. В какие группы пользователь входит, те права он и имеет.
- * (звёздочка) - незарегистрированный пользователь
- user - любой зарегистрированный пользователь
Зарегистрированные пользователи могут также входить в группы
- bot - боты, служебные программы
- sysop - администраторы,
- bureaucrat - бюрократы, те кто управляют пользователями
Права всех групп можно переопределить. Что назначено по умолчанию, описано в статье User rights.
Для случая фермы вики MediaWiki/Wiki_family_(farm) доступ можно разграничить на уровне каждой вики.
Мы разграничим доступ следующим образом:
- Общую вики (main) смогут пополнять все, даже без регистрации
- Библиотеку (lib) смогут пополнять и редактировать только администраторы, остальные могут только читать.
- Хранилище (pool) смогут пополнять и редактировать администраторы и ещё ряд избранный пользователей, остальные могут только читать.
- Удалим из LocalSettings_common.php всё строки определяющие $wgGroupPermissions.
- Создадим в общем каталоге w файлы, определяющих каждый из уровеней доступа:
- 1. LS_access_all.php:
<?php $wgGroupPermissions['*']['createaccount'] = true; $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['edit'] = true; $wgGroupPermissions['*']['createpage'] = true; $wgGroupPermissions['*']['createtalk'] = true;
- 2. LS_access_admins.php:
<?php $wgGroupPermissions['*']['createaccount'] = true; $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['createtalk'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['user']['createpage'] = false; $wgGroupPermissions['user']['createtalk'] = false; $wgGroupPermissions['sysop']['edit'] = true; $wgGroupPermissions['sysop']['createpage'] = true; $wgGroupPermissions['sysop']['createtalk'] = true;
- 3. LS_access_trusted.php:
<?php $wgGroupPermissions['*']['createaccount'] = true; $wgGroupPermissions['*']['read'] = true; $wgGroupPermissions['*']['edit'] = false; $wgGroupPermissions['*']['createpage'] = false; $wgGroupPermissions['*']['createtalk'] = false; $wgGroupPermissions['user']['edit'] = false; $wgGroupPermissions['user']['createpage'] = false; $wgGroupPermissions['user']['createtalk'] = false; $wgGroupPermissions['sysop']['edit'] = true; $wgGroupPermissions['sysop']['createpage'] = true; $wgGroupPermissions['sysop']['createtalk'] = true; $wgGroupPermissions['trusted']['edit'] = true; $wgGroupPermissions['trusted']['createpage'] = true; $wgGroupPermissions['trusted']['createtalk'] = true;
- Сделаем в каталогах вики ссылки на эти файлы
ln -s /local_path_to_site/w/LS_access_admins.php ln -s /local_path_to_site/w/LS_access_all.php ln -s /local_path_to_site/w/LS_access_trusted.php
Если будем добавлять ещё вики, то эти ссылки появятся автоматически после запуска скрипта.
- Добавляем в LocalSettings.php каждой вики соответствующие права, подключая нужный файл сразу за LS_common.php. Для вики main это будет выглядеть так:
<?php require_once( "LS_common.php" ); require_once( "LS_access_all_.php" ); $wgSitename = "TestWiki main"; $wgScriptPath = "/w-main"; $wgArticlePath = "/main/$1"; $wgDBprefix = "main__";
- Пользователь, созданный во время создания самой вики автоматически получает права администратора (группа sysop). Заводим ещё двух пользователей. Они автоматически попадут в группу user. Одного из них добавляем в группу trusted через веб-интерфейс на странице Служебная:UserRights.
- Заходим в проект по очереди всеми пользователями и проверяем, что ограничения прав действуют.
Ссылки
- http://www.mediawiki.org/wiki/Manual:User_rights_management -- Руководство по правам участников.