共享选项卡'可以添加'对folderish archetype的权限似乎无法正常工作

时间:2012-02-24 16:33:58

标签: plone archetypes

我在plone 4中开发了一个自定义文件夹内容类型;在指定此内容类型的配置文件的xml文件中,我将一些其他内容类型对象定义为可作为内容添加到此文件夹中。在rolemap.xml文件中,我有以下设置:

<permission name="my permission" acquire="False">
  <role name="Manager" />
  <role name="Owner" />
</permission>

相同的设置适用于允许的“子”内容类型。

所以一般来说,除了所有者(当然还有管理员)之外,我不想要任何人能够编辑对象。我想主人可以做的是通过“共享”选项卡明确委派对象的权限。但是当所有者向其他用户授予“可以添加”和“可以编辑”权限时,当其他用户登录时,他可以编辑文件夹对象,但无法在其中添加项目,因为“添加新”菜单可以没有显示,这不仅仅是一个UI问题,例如当他调用URL时

http://<myhost>/<mysite>/<myfolderishobject>/createObject?type_name=<myallowedType>

在表单中添加对象的选项会显示,但是当他提交它时,他会收到“权限不足”的消息。

另外两个观察结果:文件夹的所有者和委派的用户都属于同一个组,如果我将rolemap中的'acquire'属性设置为True,事情就不会改变。

我想知道问题是在我的配置中还是由错误造成的。

2 个答案:

答案 0 :(得分:2)

Plone使用role-based security model,首先看看它,它将解释以下内容。 在共享选项卡上,您为用户提供了“可以添加”权限,实际上您真正要做的就是给他Contributor角色。因此,简而言之,为了使用您的内容类型,您必须允许任何具有贡献者角色的人添加,即

<permission name="my permission" acquire="False">
  <role name="Manager" />
  <role name="Owner" />
  <role name="Contributor" />      
</permission>

请注意,其他用户也可能从更高级别的文件夹中获得Contributor角色。

答案 1 :(得分:0)

好的,为了避免其他人从父文件夹中获取贡献者角色,解决方案是添加以下代码行: self。 ac_local_roles_block = True

在重新索引文件夹对象本身的对象安全性之前