0

http://developer.plone.org/reference_manuals/external/plone.app.dexterity/advanced/permissions.html

在文档中,我看到了这个,

注意 所有权限都需要在configure.zcml 行之前定义。否则,您可能会在尝试使用 grok.require() 指令的权限时遇到错误。该 permissions.zcml文件如下所示:

<configure
    xmlns="http://namespaces.zope.org/zope"
    i18n_domain="example.conference">

    <permission
        id="example.conference.AddSession"
        title="example.conference: Add session"
        />

    <permission
        id="example.conference.ModifyTrack"
        title="example.conference: Modify track"
        />

</configure>

新权限仅默认授予 Manager 角色。要设置不同的默认值,我们可以使用 rolemap.xml GenericSetup 导入步骤,它将权限映射到站点根目录的角色。

profiles/default/rolemap.xml中,我们有以下内容:

<?xml version="1.0"?>
<rolemap>
  <permissions>
    <permission name="example.conference: Add session" acquire="True">
      <role name="Owner"/>
      <role name="Manager"/>
      <role name="Member"/>
      <role name="Contributor"/>
    </permission>
    <permission name="example.conference: Modify track" acquire="True">
      <role name="Manager"/>
      <role name="Reviewer"/>
    </permission>
  </permissions>
</rolemap>

注意此文件使用 Zope 2 权限标题而不是较短的 Zope 3 权限 ID。”

Plone's Dexterity 可以编程为使用数据库吗?如果我有成千上万的用户怎么办?当我已经在 Active Directory 或 MySQL 数据库中拥有它时,有很多 xml 文件需要跟上。我想根据它们的安全性来阻止显示按钮和其他网页项目。灵巧似乎可以做到这一点。

谢谢。

编辑:感谢您消除我在用户和角色之间的混淆,因为用户保存在像 LDAP 服务器这样的存储库中。

我是否正确,在我设置了我的角色和用户之后,我所要做的就是包装我的 html(在定义如下 Python 代码之后):

“例如,如果用户具有 cmf.RequestReview 权限,让我们在 Session 类型的视图上显示一条消息。在 session.py 中,我们使用以下(同一页面)更新 View 类,

from zope.security import checkPermission

class View(dexterity.DisplayForm):
    grok.context(ISession)
    grok.require('zope2.View')

    def canRequestReview(self):
        return checkPermission('cmf.RequestReview', self.context)

在 session_templates/view.pt 模板中,我们添加:

<div class="discreet"
     tal:condition="view/canRequestReview"
     i18n:translate="suggest_review">
    Please submit this for review.
</div>

"

4

0 回答 0