
Uns erreichte kürzlich die Anfrage, ob die im Designer integrierte Benutzerverwaltung auch prozedural aufgerufen werden kann. Das aktuelle Benutzersystem wurde bereits mit der CONZEPT 16-Version 5.3 eingeführt. Je nach Anforderung haben sich die Entwickler aber mehr oder weniger intensiv mit dem Benutzermanagement auseinandergesetzt.
Die Basis des Benutzersystems bilden drei Objekte. Das ist zum einem das Benutzer-Objekt. Für jeden Datenbank-Benutzer wird ein Objekt erzeugt, dass mit verschiedenen Eigenschaften ausgestattet ist. Hierzu zählen zum Beispiel der Login-Name und das Kennwort. Jeder Benutzer ist Mitglied mindestens einer Benutzergruppe. In diesem Objekt werden die Rechte organisiert. Die Zuweisung der Rechte erfolgt über das Objekt Elementgruppen. Hier werden die einzelnen Rechte, wie zum Beispiel Lesen und Ausführen, für die jeweiligen Datenbankelemente (Tabellen, Prozeduren, Dialoge etc.) vergeben. Die Rechte, über die ein Benutzer in der Applikation verfügt, ergeben sich demnach aus seiner Mitgliedschaft zu einer oder mehreren Benutzergruppen.
Der einfachste Weg, die Benutzerverwaltung in die eigene Anwendung zu integrieren, besteht im Aufruf des Dialogs der Benutzerverwaltung über den Befehl WinUrmDialog()
. Da die integrierte Benutzerverwaltung mit CONZEPT 16-Prozedurbefehlen entwickelt wurde, eröffnet sich für den Programmierer auch die Möglichkeit ein eigenes Benutzersystem zu erstellen, dass sich an den individuellen Anforderungen der Applikation orientiert. Hierfür steht eine Reihe von Befehlen zur Verfügung. Die Befehle beginnen mit dem Präfix Urm. Urm steht hierbei für "User and Rights Management".
Nachfolgendes Beispiel erstellt einen neuen Benutzer in der Datenbank:
try
{
// Benutzer anlegen
UrmCreate(0,_UrmTypeUser,'Salesman');
// Benutzer-Objekt zur Bearbeitung öffnen
tHdl # UrmOpen(_UrmTypeUser,_UrmLock,'Salesman');
// Mitgliedschaft in Benutzergruppe festlegen
tHdl->UrmCreate(_UrmTypeMember,'Sales');
// Hauptbenutzergruppe festlegen
tHdl->UrmPropSet(_UrmPropUserGroup,'Sales');
// Benutzer-Objekt schließen
tHdl->UrmClose();
}
Eine Besonderheit liegt in der Definition von eigenen Eigenschaften. Hiermit besteht die Möglichkeit zusätzliche Informationen bei den Benutzer-Objekten abzulegen:
// Benutzer-Objekt zur Bearbeitung öffnen
tHdl # UrmOpen(_UrmTypeUser,_UrmLock,'Salesman');
if (tHdl > 0)
{
// benutzerdefinierte Eigenschaft erstellen
tHdl->UrmCreate(_UrmTypeProperty,'MyProperty',_TypeAlpha);
// Eigenschaft setzen
tHdl->UrmPropSet('MyProperty','MyText');
// Benutzer-Objekt schließen
tHdl->UrmClose();
}
Ein Beispiel zur Verwendung der Befehle befindet sich in der Codelibrary. Eine detaillierte Beschreibung kann in der Dokumentation von CONZEPT 16 nachgelesen werden.