我在 plone 4 中开发了一个自定义文件夹内容类型;在指定此内容类型的配置文件的 xml 文件中,我定义了一些其他内容类型对象作为可添加到此文件夹的内容。在 rolemap.xml
文件中,我有以下设置:
<permission name="my permission" acquire="False">
<role name="Manager" />
<role name="Owner" />
</permission>
相同的设置适用于允许的“子”内容类型。
所以一般来说,我不希望除了所有者(当然还有管理员)之外的任何人都能够编辑该对象。我猜所有者可以做的是通过“共享”选项卡显式委托(delegate)其对象的权限。但是,当所有者向另一个用户授予“可以添加”和“可以编辑”权限时,当该其他用户登录时,他可以编辑该文件夹对象,但无法在其中添加项目,就像“添加新”菜单所做的那样不显示,这不仅仅是 UI 问题,例如当他调用 URL 时
http://<myhost>/<mysite>/<myfolderishobject>/createObject?type_name=<myallowedType>
显示了在表单中添加对象的选项,但当他提交该选项时,他收到“权限不足”消息。
一些额外的观察结果:folderish 的所有者和委派用户都属于同一组,如果我将角色映射中的“获取”属性设置为 True,情况不会改变。
我想知道问题是出在我的配置中还是由错误引起。
最佳答案
Plone 使用 role-based security model ,先看一下,下面会解释的。
当您在共享选项卡上授予用户“可以添加”权限时,实际上您真正要做的就是授予他Contributor
角色。简而言之,为了使其适用于您的内容类型,您必须允许具有贡献者角色的任何人添加,即
<permission name="my permission" acquire="False">
<role name="Manager" />
<role name="Owner" />
<role name="Contributor" />
</permission>
请注意,其他用户也可能从更高级别的文件夹获取Contributor
角色。
关于plone - 文件夹原型(prototype)的共享选项卡 'can add' 权限似乎无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434455/