如何为匿名用户但未登录用户授予字段写入权限?

时间:2015-02-26 05:39:05

标签: plone dexterity

在我的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权限,则实际授予该权限   大家。无法向未登录的用户授予权限   用户也没有授予他们登录的权限。

那么,有什么建议吗?

1 个答案:

答案 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


...

More about hiding fields in the z3c.form Docu

相关问题