Tipps & Tricks - Benutzerverwaltung mit Groovy

Benutzer anlegen

Neue Benutzer können per Prozess angelegt und einer Benutzergruppe zugeordnet werden. Eine Groovy-Aktion übernimmt das Einfügen mit folgendem Skript:
def user = g_om.createUser{
	container     = "System"
	name          = "user-${now().withoutFractionalSeconds}"
	loginName     = "UserU-${now().withoutFractionalSeconds}"
	emailBiz      = "user@example.org"
	description   = "User created with Groovy at ${now().withoutFractionalSeconds}"
    memberOf    = ["Benutzer", "6AA80844C3F99EF93BF4598EB18605BF86FDD3C5"]
}
Das Zugriffsobjekt g_om stellt eine Struktur zur Verfügung, mit der Operationen in der Benutzerverwaltung und Organisationsstruktur eines Portals ausgeführt werden können. In diesem Skript-Beispiel werden beim Anlegen eines Benutzers die folgenden Eigenschaften gesetzt, wobei name und loginName erforderlich sind. Alle weiteren Eigenschaften sind optional. Für Benutzernamen und Login wird hier ein Zeitstempel verwendet, um die Eindeutigkeit sicherzustellen. Wird in einer Benutzerverwaltung die Eindeutigkeit eines Benutzernamens und eines Logins nicht anhand einer ID oder eines Zeitstempels gewährleistet, sondern stattdessen ein anderes Format verwendet, wie z.B. vorname.nachname, muss beim Anlegen eines neuen Benutzers überprüft werden, ob bereits ein Benutzer mit gleichen Daten existiert und bei Bedarf eine entsprechende Fehlerbehandlung ausgeführt werden.

Mitgliedschaften eines Benutzers auslesen

Das folgende Skript kann verwendet werden, um die Gruppenzugehörigkeiten eines Benutzers zu ermitteln.
def user = g_om.getUser(g_session.user.guid)
def sets = g_om.getMembershipSets(user)
def strAdminGroupGuid = "EF16F15EDA8562E19D7DD75BF2OP3001F119193C"

if (sets*.guid.contains(strAdminGroupGuid))
	return adminGroupMemberTrue
else
	return adminGroupMemberFalse
In diesem Beispiel wird mit Hilfe von g_session.user.guid die GUID des aktuell angemeldeten Benutzers ausgelesen. g_om.getMembershipSets(member) liefert eine Liste mit allen - auch untergeordneten - Gruppen, in denen der übergebene Benutzer Mitglied ist. Anschließend kann mit Hilfe einer Iteration über die GUIDs der gefundenen Gruppen ermittelt werden, ob sich die GUID der Administratorengruppe (die Sie im Skript mit Ihrer eigenen Administratorengruppen-GUID ersetzen müssen) in der gelieferten Ergebnismenge befindet. In Abhängigkeit dieser Auswertung - in diesem Beispiel die Auswertung, ob der Benutzer Mitglied der Gruppe Administratoren ist - wird ein entsprechender Wert zurückgegeben, mit dem z.B. in einer Groovy-Bedingung weitere Prozessschritte gezielt angesteuert werden können.