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>
新しい権限は、デフォルトでマネージャ ロールにのみ付与されます。別の既定値を設定するには、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 3 パーミッション ID の代わりに、Zope 2 パーミッション タイトルを使用します。
Plone の Dexterity はデータベースを使用するようにプログラムできますか? 何千人ものユーザーがいる場合はどうなりますか? 既に Active Directory または MySQL データベースにある場合、それは多くの xml ファイルについていく必要があります。セキュリティに基づいて、ボタンやその他の Web ページ アイテムが表示されないようにしたい。器用さはそれを行うように見えます。
ありがとう。
編集: ユーザーは 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>
"