MediaWiki-限制对名称空间的访问

时间:2020-07-05 15:16:43

标签: linux mediawiki wiki lockdown

MediaWiki 1.31.8 中,我需要限制对命名空间中页面的访问,以便只有组成员才能使用/查看它。

该维基有500多个以“ MARKETING:”开头的页面

我通过将其添加到LocalSettings.php中创建了一个名称空间:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
<select name="age">
    <option value="">- Select -</option>
    <option value="1" class="">30-34</option>
    <option value="2">35-39</option>
</select>
<p>Do you smoke?</p>
<label for="riskSmoke"><input type="radio" name="riskSmoke" value="2"> Yes</label><br>
<label for="riskSmoke"><input type="radio" name="riskSmoke" value="0"> No</label>
</form>
<div class="output">
    <label>Total Score: </label>
    <span id="output"></span>
</div>

然后我安装了Lockdown,并将此行添加到LocalSettings.php:

"$wgExtraNamespaces =
       array (104 => "MARKETING",
             105 => "MARKETING_Talk");

然后,我与一个没有组的虚拟用户进行了隐身测试(以避免cookie错误),期望该用户没有任何特权,但实际上不起作用。我注意到我可以在上面的代码中输入乱码,它不会改变任何内容,甚至不会抛出日志。非常感谢您的帮助,谢谢。

编辑:已解决。事实证明,由于营销名称空间是用数组设置的,因此我不得不对数组使用语法:

$wgNamespacePermissionLockdown[MARKETING]['*'] = ['marketing'];
(I've seen some users have "marketing" as their group in the wiki "ListUsers" webpage)

1 个答案:

答案 0 :(得分:0)

您混淆了名称空间名称,ID和常量。 104是名称空间ID,MARKETING是名称空间名称。几乎所有内容都以名称空间ID(而非名称)作为键,包括$wgNamespacePermissionLockdown

通常,您可以通过在配置中将define( 'NS_MARKETING', 104 )放置在配置中的某个位置,然后编写$wgNamespacePermissionLockdown[NS_MARKETING]['*'] = ['marketing'];来为ID名称定义一个人类可读的常量,该ID将按ID进行索引。如果您改写$wgNamespacePermissionLockdown[MARKETING],则由于没有MARKETING常量,PHP将假定您打算编写'MARKETING',并将其视为字符串,因此不会为该字符串定义权限。命名空间ID。

相关问题