Изменение разрешений на чтение метаданных DublinCore и Plone 4 - PullRequest
2 голосов
/ 11 июля 2011

Я создал собственный тип контента, используя Ловкость, которая прекрасно работает.Это содержимое должно быть доступно для просмотра, но его создатель должен быть скрыт от непривилегированных участников.

Я, очевидно, могу сделать это, удалив документ byline из шаблона, но если я добавлю, как обычный член, '/ Creator' ксодержимое, которое я все еще могу видеть создателю.

Я могу решить эту проблему, переопределив Products.CMFDefault.DublinCore.DefaultDublinCoreImpl.Creator () и добавив дополнительную проверку, конечно, но она грязная и не поддерживается.

Как лучше всего выборочно скрывать метаданные DublinCore от непривилегированных пользователей в контексте Ловкости (если применимо)?

1 Ответ

0 голосов
/ 12 июля 2011

Другим решением является переопределение безопасности 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 и не находит его, не имея требуемого разрешения.Также удаляются все предыдущие декларации безопасности для этого метода.

Есть еще идеи?

...