我在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,事情就不会改变。
我想知道问题是在我的配置中还是由错误造成的。
答案 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
在重新索引文件夹对象本身的对象安全性之前