Die Zope-Benutzerverwaltung über den Standard User Folder kann seit der Version ZMS 1.3 durch eine eigene Benutzerverwaltung per Simple User Folder ersetzt werden.
Dazu wird der UserFolder durch das Produkt SimpleUserFolder ersetzt. Damit lassen sich leicht eigene Benutzerquellen und Rollen definieren. Um eine eigene Benutzerquelle einzurichten, muss im Tabulator "Zugriff" der Typ auf Benutzerdefiniert eingestellt werden.
Im Folgenden wird am Beispiel des mitgelieferten Beispiels der Aufbau einer einfachen eigenen Benutzerverwaltung Schritt für Schritt beschrieben. Die unten beschriebenen Methoden müssen entweder im Simple User Folder Objekt selbst oder einem Objekt, von dem aus der Simple User Folder sie akquirieren kann, angelegt werden.
Benutzerquelle (userSource)
Eine Benutzerquelle stellt der Benutzerverwaltung Informationen (Kennung, Passwort, Rollen) über alle Nutzer zur Verfügung. Um eine eigene Benutzerquelle zu erstellen, legen Sie eine DTML-Methode userSource an.
Das Script(Python)-Objekt addUser definiert, wie Benutzer einem ZMS-Objekt zugewiesen werden. Im Beispiel wird für jeden Benutzer ein DTML-Dokument angelegt.
Das Script(Python)-Objekt editUser definiert, wie die Benutzereigenschaften geändert werden. Im Beispiel können nur die Rollen eines Benutzers als Eigenschaft des zugehörigen DTML Dokuments verändert werden. Alle weiteren Eigenschaften werden von der externen Benutzerquelle bereitgestellt.
Das Script(Python)-Objekt deleteUser implementiert das Entfernen einer Benutzerzuweisung. Im Beispiel wird das dem Benutzer entsprechende DTML Dokument gelöscht.
Die Eigenschaften eines einem ZMS-Objekt zugewiesenen Benutzers erhält man, indem man den Benutzernamen bzw. die -ID dem Script(Python)-Objekt getUserDetails als Parameter übergibt. Man erhält ein Dictionary mit allen zur Verfügung stehenden Eigenschaften. getUserDetails muss immer zuletzt und unter anderem Namen hinzugefügt werden. Fügen Sie dazu ein Script(Python)-Objekt getUserDetails2 ein und benennen Sie dies anschliessend in getUserDetails um.
## Script (Python) "getUserDetails"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=name
##title=
##
userSource = []
dtml_method = getattr(container,'userSource',None)
if dtml_method is not None:
userSource = dtml_method()
user = getattr(container,name,None)
if user is not None:
for userSourceItem in userSource:
if userSourceItem['name'] == name:
return {
'password' : userSourceItem['password'],
'roles' : user.getProperty('roles'),
}
return None
Management Interface
Das ZMS Management Interface zum Bearbeiten der Benutzer kann auf die Bedürfnisse der eigenen Benutzerverwaltung angepasst werden. Dazu wird die DTML Methode manage_SimpleUserFolder eingebunden. Diese muss selbständig die Anzeige sowie das Bearbeiten (Einfügen, Ändern, Löschen) der Nutzer übernehmen.