Rollen

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 KonfigurationBenutzer 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.

Rechte und Rollen programmatisch ändern

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:

RoleManager

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:

Rechte überprüfen:
from AccessControl import getSecurityManager
from Products.CMFCore.permissions import ModifyPortalContent

sm = getSecurityManager()
if sm.checkPermission(ModifyPortalContent, context):
    # do something
Rechte ändern:
context.manage_permission("Portlets: Manage portlets",
                          roles=['Manager', 'Owner'], acquire=1)
Überprüfen, ob ein Nutzer angemeldet ist oder nicht (d.i. anonymous):
from Products.CMFCore.utils import getToolByName
mtool = getToolByName(context, 'portal_membership')
if mtool.isAnonymousUser():
    # do something
Herausfinden des aktuellen Nutzers:
member = mtool.getAuthenticatedMember()
user_id = member.getId()
Finden von Mitgliedern anhand der ID:
admin_user = mtool.getMemberById('admin')