修改DublinCore元数据和Plone 4的读取权限

时间:2011-07-11 09:20:55

标签: plone dublin-core dexterity

我使用Dexterity创建了一个自定义内容类型,工作正常。此内容应该是可见的,但其创建者对未被特权的成员保持隐藏。

我显然可以通过从模板中删除文档 - 副行来实现这一点,但如果我作为普通成员附加到内容的'/ Creator',我仍然可以看到创建者。

我可以通过覆盖Products.CMFDefault.DublinCore.DefaultDublinCoreImpl.Creator()来解决这个问题,然后引入一个额外的检查,但它很脏且不可维护。

在敏捷(如果适用)的情况下,选择性地隐藏来自非特权用户的内容DublinCore元数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

另一个解决方案是在此背景下重新定义Zope安全性:

import Globals
from AccessControl import ClassSecurityInfo
from Products.CMFDefault.permissions import ManagePortal

from plone.directives.dexterity import Item


Item.security = ClassSecurityInfo()
Item.security.declareProtected(ManagePortal, 'Creator')

Globals.InitializeClass(Item)

这重新定义了“创造者”灵巧方法的安全性。这样 只有具有ManagePortal权限的用户才能访问此权限 信息。

然而,ajung指出,这可能会破坏任何对Creator方法做出假设并且找不到它而没有所需权限的代码。它还会删除此方法的所有先前安全声明。

还有其他想法吗?