Lade...
 

CX_CLASS_SECURITY - Zugriffsrechte für Klassen

CX_CLASS_SECURITY

Klassenhierarchie
Beschreibung:

Für alle Objekte einer Klasse werden Zugriffsrechte festgelegt. Die Schreib- und Leserechte gelten zunächst für alle Datenfelder (einschließlich dynamischer Datenfelder) der Klasse. Für bestimmte Zugriffsausdrücke können mit Objekten der Klasse CX_ATTRIBUTE_SECURITY hiervon abweichende Rechte definiert werden (Feld accessExpressions)

Für Funktionsaufrufe und Indizes gelten folgende zusätzliche Verallgemeinerungen:

Objekte der Klasse CX_CLASS_SECURITY beschreiben die Zugriffsrechte für eine Menge von Objekten. Das Datenfeld specializations verweist auf (untergeordnete) Security-Objekte mit abweichenden Festlegungen für Teilmengen (z.B. für abgeleitete Klassen oder für ausgewählte Instanzen einer Klasse). Die untergeordneten Security-Objekte werden nur dann ausgewertet, wenn schon das übergeordnete Objekt bereits eine Aussage liefern könnte.

Beispiel:

Es existieren die Klassen A, A1, A2 und B, wobei A1 und A2 von A abgeleitet sind:

CX SECURITY SET Tree

Ein CX_CLASS_SECURITY-Objekt für A - Bit flag 4 sei 0 - beschreibt die Zugriffsrechte für alle Objekte der Klassen A, A1 und A2: Objektmenge MA. Für Objekte der Klasse A1 sollen abweichende Rechte gelten (Menge MA1). Wegen MA > MA1 beschreibt das entsprechende Security-Objekt eine Spezialisierung und kann dem Security-Objekt für A untergeordnet werden. Das gleiche gilt für ein Objekt der Klasse CX_OBJECT_SECURITY, das sich auf ausgewählte Instanzen von A1 bezieht:  MA > MA1> MObjects. Dagegen ist es sinnlos, ein Security-Objekt für Klasse B als Spezialisierung des Objekts für A aufzufassen: MB ist keine Teilmenge von MA.

Falls in specializations mehrere Security-Objekte für eine Klasse/Objekt zuständig sind, gewinnt das letzte Objekt. Das Verhalten war vor Dll-Version 225901 anders.

CX SECURITY SET3

 

Code-Beispiel:
CreatePersObject(CX_CLASS_SECURITY) -> securityObject String(CX_CLASS_SECURITY::name, 150, 4, 220) Enum(CX_CLASS_SECURITY::objectClassID, 150, 14, 220, 50, "GetClassNames()") Checkbox(CX_CLASS_SECURITY::flags[4], 360, 16, 140, T("Ohne Vererbung", "Without inheritance"))

 

Methodenverzeichnis (MDI)
Funktion MA* Parameter Rückgabe Kurzbeschreibung
ClassName     STRING Klassename
Register       Security-Objekt anmelden 
TestClass
225901
  INTEGER CX_BIT_PATTERN Liefert den Klassenzugriff für eine spezifische Klasse
TestMessage
225661
  INTEGER TRUE/FALSE Test, ob Message erlaubt oder gesperrt wird
TestObject
225901
  OBJECT, STRING CX_BIT_PATTERN Liefert den Objektzugriff für ein spezifisches Objekt (+ Pfad)
TestOption
225735
  INTEGER TRUE/FALSE Test, ob Option erlaubt oder gesperrt wird.

* MA = Member-Access-Funktion

Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
specializations COLL CX_SECURITY   untergeordnete Security-Objekte
name STRING     Beschreibung
accessExpressions COLL CX_ATTRIBUTE_SECURITY   Objekte der Klasse CX_ATTRIBUTE_SECURITY
objectClassID ENUMSHORT     identifiziert die Klasse, für die Zugriffsrechte definiert werden.
flags INTEGER    
Wert Beschreibung
0x01 Lesen erlaubt
0x02 Schreiben erlaubt
0x04 Objekt erzeugen erlaubt
0x08 Objekt löschen erlaubt
0x10 Gesetzt = Rechte gelten nur für genau diese Klasse

Nicht gesetzt = Rechte gelten auch für abgeleitete Klassen

* I = Indizierbares Datenfeld

Verwendung in AppsWH
Modul Kurzbeschreibung
secclass.mod Zugriffsrechte für Klassen Editiermodul