Rollen können sowohl Nutzern als auch Gruppen zugewiesen werden. Dabei empfiehlt sich im Allgemeinen, Rollen zu erstellen, denen bestimmte Rechte zugewiesen werden, anstatt jedem Nutzer die jeweiligen Rechte zuzuweisen.
So haben z.B. die Gruppen Reviewers und Administrators die entsprechenden Manager- oder Reviewer-Rollen.
Die globale Zuordnung von Nutzern und Gruppen zu einer Rolle können Sie in Plone Konfiguration → Benutzer und Gruppen vornehmen.
Die lokale Zuweisung von Rollen erfolgt im Allgemeinen im Zugriff-Reiter eines Inhaltsobjekts. Dort suchen Sie zunächst nach einem Nutzer oder einer Gruppe, um in den Suchergebnissen anschließend Zuweisungen zu bestimmten Rechten vornehmen zu können. Die lokal verfügbaren Rollen sind beschränkt auf die explizit angegebenen (s.a. plone/app/workflow/localroles.py
und plone/app/workflow/configure.zcml
).
Plone selbst kommt mit sieben verschiedenen Rollen:
Member
ist die Standardrolle für einen angemeldeten Nutzer, der nur wenige Rechte zugewiesen sind.
Manager
ist die super-user-Rolle; sie ist der Administrators-Gruppe zugeordnet.
Reviewer
erlaubt Inhabern der Rolle, Artikel zu sehen und zu bestätigen, deren Inhalte zur Veröffentlichung vorgeschlagen wurden.
Reader
ist lediglich als lokale Rolle vorgesehen, wenn Member
die Inhalte nicht sehen können.
Editor
ist das Pendant zu Reader
, um Eigentümern die Möglichkeit zu geben, lokal Schreibrechte zu erteilen.
Contributor
ermöglicht einem Eigentümer, das Hinzufügen-Recht in einem Ordner an andere zu übertragen. Es erscheint im Zugriff-Reiter unter Kann hinzufügen.
Site Administrator
hat Management-Rechte bis auf
die Verwendung des Wartung-Kontrollfeldes
den Zugang zum Zope Management Interface (ZMI)
das Hinzufügen und Entfernen von Produkten
die Änderung des Aussehens
die Änderung der Cache-Konfiguration
Darüberhinaus definiert Zope noch drei automatisch zugewiesene Rollen:
Owner
wird normalerweise dem Nutzer zugeordnet, der das Inhaltsobjekt erstellte.
Authenticated
wird angemeldeten Nutzern zugewiesen. Diese Rolle ist niedrigschwelliger als Member
und kann nicht explizit zugewiesen werden.
Anonymous
ist die Rolle für nicht-angemeldete Nutzer.
Die meisten niedrigschwelligen Sicherheitsmethoden werden in der AccessControl.Role.RoleManager
-Klasse definiert. Diese ist in allen Inhaltsobjekten verfügbar einschließlich des Plone Site-Objekts selbst. Sie können sich diese Methoden im Doc-Reiter im Wurzelverzeichnis Ihrer Plone-Site anschauen:
Darüberhinaus empfiehlt sich auch ein Blick in den Doc-Reiter des PlonePAS Membership Tool.
Und hier noch einige der am häufigsten verwendeten programmatischen Änderungen von Rechten und Rollen:
from AccessControl import getSecurityManager
from Products.CMFCore.permissions import ModifyPortalContent
sm = getSecurityManager()
if sm.checkPermission(ModifyPortalContent, context):
# do something
context.manage_permission("Portlets: Manage portlets",
roles=['Manager', 'Owner'], acquire=1)
from Products.CMFCore.utils import getToolByName
mtool = getToolByName(context, 'portal_membership')
if mtool.isAnonymousUser():
# do something
member = mtool.getAuthenticatedMember()
user_id = member.getId()
admin_user = mtool.getMemberById('admin')