Also es gibt User, Groups und Permissions (Rechte).
Die Permissions kann man den Usern aber auch den Gruppen zuteilen.
Es besteht als einen N:M Beziehung zwischen User und Permissions als auch zwischen Groups und Permissions.
Wenn ein User sich anmeldet, dann sammelt man alle seine Permissions in einer Liste.
Der User kann Mitglied in mehreren Gruppen sein.
Also erhält der User weitere Permissions aus diesen Gruppen.
Eine Permission könnte z.B. sein:
Code:
Permission_Edit_Global_Config (Benutzer darf globale Konfiguration ändern)
Dann gibt es lokal in jedem Formular / Datenmodul eine Zuordnung von Permissions zu bestimmten Properties von Komponenten.
Das könnte z.B. so aussehen:
Delphi-Quellcode:
PanelConfig.Enabled := SecurityManager.HasPermission('Permission_Edit_Global_Config');
QueryPreise.ReadOnly := not SecurityManager.HasPermission('Permission_Change_Prices');
MenuItemDebug.Visible := SecurityManager.HasPermission('Permission_Debug');
Es gibt hauptsächlich 3 Properties, die von Interesse sind: Enabled, Visible und ReadOnly.
Mit Hilfe von
RTTI kann man die Zuordnung zwischen Komponenten-Properties und Permissions zur Laufzeit herstellen.
Du kannst es dir aber auch einfach machen und die
TMS Security System Komponenten (früher: Uil Security) kaufen.