2

我在 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>

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

一些额外的观察:文件夹的所有者和委派用户都属于同一个组,如果我将角色映射中的“获取”属性设置为 True,事情不会改变。

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

4

2 回答 2

2

Plone 使用基于角色的安全模型,先看一下,下面会讲解。当您在共享选项卡上授予用户“可以添加”权限时,实际上您真正要做的是给他Contributor角色。因此,简而言之,要使其与您的内容类型一起使用,您必须允许具有贡献者角色的任何人添加,即

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

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

于 2012-02-24T17:17:32.787 回答
0

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

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

于 2012-02-28T19:13:02.527 回答