Zum Hauptinhalt springen

Definition von Berechtigungen

Definition von Berechtigungen Benutzergruppen Rechte geben und entziehen

Ein Recht kann zugesichert (_UrmAllow) oder entzogen (_UrmDeny) werden. Ein entzogenes Recht hat dabei Vorrang vor einem zugesicherten Recht.

Folgende Rechte können vergeben und entzogen werden:

Für die Verarbeitung von Benutzerrechten werden weitere Rechte benötigt:

Für das Zuordnen von Benutzern zu Benutzergruppen gibt es die folgenden Berechtigungen:

Neben diesen vom System vorgegebenen Berechtigungen können vom Programmierer noch 24 weitere Rechte vergeben werden. Die Rechte können über _UrmPermUser-Konstanten angesprochen werden.

Neue Berechtigungen können entweder im Designer über den Menüpunkt Bearbeiten / Benutzerpflege... oder über die entsprechenden Benutzerbefehle angelegt bzw. geändert werden.

Prinzipiell gibt es zwei Vorgehensweisen, wenn im Rahmen eines Rechtesystems innerhalb der Datenbank gearbeitet wird:

  1. Aufruf der Funktion und Überprüfung des Rückgabewertes
  2. Überprüfung der Rechte und Aufruf der Funktion

Werden keine benutzerdefinierten Rechte und Elemente verwendet, kann die erste Methode verwendet werden. Über den Rückgabewert der aufgerufenen Funktion kann dann festgestellt werden, ob die Funktion ausgeführt werden konnte (siehe ErrGet () und bei den entsprechenden Anweisungen).

Soll vor dem Aufruf einer Funktion überprüft werden, ob entsprechende Rechte vorhanden sind, kann dies mit den Anweisungen UrmPermGet () und UrmPermGetRaw () bzw. UrmPermElementGet () und UrmPermElementGetRaw () erfolgen. Die Anweisungen unterscheiden sich einerseits dadurch, dass sie die Rechte auf Ebene der Elementgruppen bzw. auf Ebene der Elemente überprüfen, andererseits eine Rechteauswahl prüfen oder alle Rechte zurück geben.

Welche Anweisung verwendet wird, um die Rechte zu überprüfen hängt letztlich von der Situation ab. Soll nur für einen Moment überprüft werden, ob ein Recht vorhanden ist, können die Anweisungen UrmPermGet () und UrmPermElementGet () leicht in eine if-Abfrage integriert werden. Sollen im weiteren Verlauf noch andere Rechte des gleichen Objekts überprüft werden, können mit den anderen Anweisungen gleich alle Rechte abgefragt und zwischengespeichert werden.

if (UrmPermGet(0, 'ElmGrpCustomer', _UrmAllow, _UrmPermRead))
{
tErg # RecRead(tblCstCustomer, keyCstId, _RecFirst);
...
}

tRights # UrmPermGetRaw(0, 'ElmGrpCustomer', _UrmAllow);
if (tRights & _UrmPermRead > 0)
{
...
}

if (tRights & _UrmPermDelete > 0)
{
...
}

Das bisherige Beispiel erfordert die Kenntnis, welche Elementgruppe abgefragt werden muss, um die korrekte Berechtigung zu lesen. Ist die Elementgruppe nicht bekannt, können die UrmPermElement...-Befehle verwendet werden. Hier wird das Datenbank-Element angegeben, um die Berechtigung zu ermitteln.

if (UrmPermElementGet(_UrmTypeElmTable,'tblCstCustomer',_UrmPermRead))
{
tErg # RecRead(tblCstCustomer, keyCstId, _RecFirst);
...
}

In diesem Fall wird das Leserecht in einer Datei überprüft. Die Vergabe der Rechte ist aber nicht an Elemente der Datenbank gebunden. Der Programmierer kann eigene Einträge definieren. So kann zum Beispiel die Ausführung von Druck-Funktionen durch Rechte beschränkt werden. Dazu wird mit UrmCreate (tHdlElmGrp, _UrmTypeElmCustom , 'ElmPrintOutput' ) einer geöffneten Elementgruppe der Eintrag ElmPrintOutput hinzugefügt. Mit der Anweisung UrmPermSet (tHdlUserGrp, <Name Elmementgruppe>, _UrmRead | _UrmExecute ) wird einer Benutzergruppe das Lese- und das Ausführungsrecht zugesprochen. Mit der Abfrage UrmPermElementGet ( _UrmTypeElmCustom , 'ElmPrintOutput' , _UrmPermExecute ) kann für den eigenen Benutzer das Ausführungsrecht überprüft werden.

Mit diesen Befehlen können nur die effektiven Rechte des eigenen Benutzers ermittelt werden. Die Rechte von anderen Benutzern können nur mit den Anweisungen UrmPermGet () und UrmPermGetRaw () ermittelt werden.

Die neuen Berechtigungen werden vom CONZEPT 16-Server verwaltet. Änderungen an diesen Rechten wirken sich sofort aus. Die Berechtigungen aus dem alten Benutzersystem werden durch den Client verarbeitet. Diese Rechte werden nur bei der Anmeldung des Benutzers vom Server gelesen. Änderungen wirken sich somit erst nach einer erneuten Anmeldung aus. Alle Änderungen an den Rechten und Eigenschaften von Benutzern, Benutzergruppen und Elementgruppen bleiben persistent in der Datenbank erhalten.