在我的dexterity form
中,我有"author"
字段anonymous
来填写,而没有logged-in user
。
我定义了一个名为"isAnonymous"
的权限,并向匿名用户授予"isAnonymous"
,
我像这样使用dexterity.write_permission(author='isAnonymous'),
:
dexterity.write_permission(author='isAnonymous')
author=schema.TextLine(
title=_(u'Author'),
)
但是,此方法失败,即使logged-in user
也可以看到此字段。
在此页面
http://docs.plone.org/develop/plone/security/standard_permissions.html
有一张纸条:
如果授予Anonymous权限,则实际授予该权限 大家。无法向未登录的用户授予权限 用户也没有授予他们登录的权限。
那么,有什么建议吗?
答案 0 :(得分:2)
Afaik你无法解决安全系统的问题。但你可以customise the Dexterity add/edit form
然后你有充分的力量:-)你可以实现一个条件,它可以显示你的领域。
敏捷形式基于z3c.forms,因此它们具有多种方法,您可以覆盖(超级调用并执行您的操作)。
在您的情况下,代码可能如下所示。
...
# I would recommend to use the `updateWidgets` method.
def updateWidgets(self):
super(CustomAddEditView, self).updateWidgets()
from plone import api
if not api.user.is_anonymous():
from z3c.form.interfaces import HIDDEN_MODE
self.widgets['author'].mode = HIDDEN_MODE
...