使用api

  1. 我们正在运行一个MediaWiki。
  2. 我们创建了一个自定义名称空间(“ NS_FOO”)。
  3. 我们为“ NS_FOO”(LocalSettings.php)添加了名称空间(写)保护
  4. 适用于除我们自定义用户组“ QM”以外的所有用户。
  5. 我们在此自定义名称空间中添加了页面。

一切正常,也就是说,除“ QM”组的成员外,没有用户可以编辑这些页面。

  1. 我们尝试使用api(属于QM组成员的用户的自动密码)编辑此页面

我们收到错误:

code:"protectednamespace"
info:"You do not have permission to edit pages in the FOO namespace."

这是LocalSettings.php的一部分:

define("NS_FOO",3000);
define("NS_FOO_TALK",3001);

$wgExtraNamespaces[NS_FOO] = "foo";
$wgExtraNamespaces[NS_FOO_TALK] = "foo_talk";

# add protection
$wgNamespaceProtection[NS_foo] = ['QM-edit-rights'];

# Allow QM to edit "FOO" namespace
$wgGroupPermissions['QM']['QM-edit-rights'] = true;


$wgGroupPermissions['QM']['edit'] = true;
$wgGroupPermissions['QM']['createpage'] = true;
$wgGroupPermissions['QM']['delete'] = true;
etc.

我知道以下事实:使用api可能会出错。但是在这种情况下,它似乎仅取决于受保护的名称空间。因为:

  1. 在默认名称空间中更改页面时,api编辑工作正常。因此,使用我们的api调用更改页面似乎没有任何问题。
  2. 另一方面,当个人完成而不使用api时,受保护命名空间中的编辑可以正常工作。

但是结合使用api编辑受保护的命名空间中的页面会产生上面引用的错误。

我对漫游器密码(或api访问)的理解是,它应该继承用户的组权限。而且,如果允许用户编辑页面,则该漫游器也应该能够执行该页面(如果没有进一步限制,则该漫游器密码将不受限制)。

机器人密码是否需要对受保护的名称空间有一些额外的权限?
还是一般来说机器人无法更改受保护名称空间中的页面?
这是mediawiki的错误吗?

iCMS 回答:使用api

我对漫游器密码(或api访问)的理解是,它应该继承用户的组权限。

自动密码会话会继承用户的特定权限。管理漫游器密码时,您具有在$wgGrantPermissions中定义的权限捆绑(授权)列表,并且可以选择要继承的权限。如果未选中相关授权,或者首先没有为该权限定义授权,则bot密码会话将没有该权限。 (IOW,该漫游器仅拥有既具有用户权限又具有授予权的那些权限。)

所以,您需要类似的东西

$wgGrantPermissions['editpage']['QM-edit-rights'] = true;

除上述内容之外。

本文链接:https://www.f2er.com/1848679.html

大家都在问