Jump to content

手册:$wgNamespaceProtection

From mediawiki.org
This page is a translated version of the page Manual:$wgNamespaceProtection and the translation is 93% complete.
访问: $wgNamespaceProtection
哪个名字空间能够被谁编辑?
引进版本:1.10.0 (r19110)
移除版本:仍在使用
允许的值:(字符串数组)
默认值:$wgNamespaceProtection = []; (1.14+)
$wgNamespaceProtection[NS_MEDIAWIKI] = array( 'editinterface' ); (1.10 - 1.13)

详情

此设置允许一个wiki要求特殊权限来编辑某些名字空间。 默认来说,只有MediaWiki名字空间被限制,仅有拥有'editinterface '权限的用户(默认情况下为管理员)可以编辑。

The array's keys are namespace numbers, and the values are simple arrays of permission names. 如果你给一个名字空间列举了多于一项的权限要求,那那个用户必须拥有所列举的所有权限才能在那个名字空间进行编辑。

自从版本1.14起,MediaWiki: 名字空间被无条件地保护,仅允许拥有'editinterface'的用户编辑(与之前版本相同)。 这在Setup.php 中设置,而且无法在LocalSettings.php 中修改。因为要是被不正确地设置容易导致wiki不安全。 如果你想允许除管理员以外的用户组编辑MediaWiki: 名字空间,请对这些用户组授予'editinterface'权限

使用$wgNamespaceProtection来限制在某个名字空间的读取的是不可能的。 (参见 扩展:Lockdown

示例

限制在主名字空间编辑

$wgNamespaceProtection[NS_MAIN] = ['edit-main'];

这限制了仅有edit-main权限的用户才可以编辑主名字空间。

设定一个名字空间并限制编辑

define('NS_OFFICIAL', 100);
define('NS_OFFICIAL_TALK', 101);

$wgExtraNamespaces = [
    NS_OFFICIAL => 'Official',
    NS_OFFICIAL_TALK => 'Official_talk'
];

$wgNamespaceProtection[NS_OFFICIAL]      = ['official-edit'];
$wgNamespaceProtection[NS_OFFICIAL_TALK] = ['official-talk-edit'];

$wgGroupPermissions['managers']['official-edit'] = true; // 只有managers能够在Official名字空间编辑页面。
$wgGroupPermissions['employees']['official-talk-edit'] = true; // Employees能够在Official_talk名字空间中编辑。
$wgGroupPermissions['managers']['official-talk-edit'] = true; // Managers也可以编辑。

禁用讨论页

由于"everyone"不是一个核心的权限,所以所有人都会被拒绝访问(包括管理员)。 请注意,您仍然需要通过其他方法删除选项卡(请参阅:手册:常问问题#如何在整个Wiki中添加/删除选项卡?

# 禁用所有内置的讨论页
$wgNamespaceProtection[NS_TALK] = ['everyone'];
$wgNamespaceProtection[NS_USER_TALK] = ['everyone'];
$wgNamespaceProtection[NS_PROJECT_TALK] = ['everyone'];
$wgNamespaceProtection[NS_FILE_TALK] = ['everyone'];
$wgNamespaceProtection[NS_MEDIAWIKI_TALK] = ['everyone'];
$wgNamespaceProtection[NS_TEMPLATE_TALK] = ['everyone'];
$wgNamespaceProtection[NS_HELP_TALK] = ['everyone'];
$wgNamespaceProtection[NS_CATEGORY_TALK] = ['everyone'];

另请参阅