# Versteckte User-Exits: Zugriffsberechtigungen manipulieren (GACL) Die Mappentypen "**Invoice**", "**Procurement**" und "**Mailroom**" verwenden den Mappenklassenschutz und im Standard ist hier das Text-Feld "**Rights**" hinterlegt. Der Mappenklassenschutz berücksichtigt Zugriffsprofile und Benutzer-Logins. Standardmäßig setzen sich die Berechtigungen aus den Feldern "**RightsInitial**" und "**RightsWorkflow**" zusammen. Die Berechtigungen werden bei einer Weiterleitung automatisch erweitert. Jede Gruppe bzw. jeder Benutzer welcher am Workflow teilnimmt erhält automatisch Zugriffsrechte. Im Feld "**RightsInitial**" werden die initialen Berechtigungen festgehalten, welche über die entsprechende WEB-Konfiguration gesetzt werden können. Diese Rechte werden bei einer weiterleitung neu ermittelt! Wenn initiale Berechtigungen abhängig von Feldwerten definiert wurden (zum Beispiel vom Mandanten-Feld) und sich der Feldwert in einer Mappe ändert, dann können neue Zugriffsberechtigungen hinzukommen und es kann auch vorkommen, dass Zugriffsberechtigungen wieder entzogen werden! Das Feld "**RightsWorkflow**" speichert hingegen die Gruppen und Benutzer, die am Workflow zum Vorgang teilgenommen haben. Diese Liste wird immer weiter fortgeführt. Die Zugriffsberechtigungen werden technisch über das Skript-Objekt "**RightsGACL**" gesteuert. Dieses Objekt wird mit dem DocFile-Objekt als Parameter aufgerufen und enthält folgende Methoden: - **addWorkflowEntry**(String login/tech ap name) - **addAccessProfile**(AccessProfile) - **addSystemUser**(SystemUser, Boolean add agent in case of absence) - **checkRights**(SystemUser) - **createGACLString**() - **readInitialRights**() - **readRightsFromField**(String fieldName) Das Objekt hat folgende Eigenschaften:
**Eigenschaft****Typ****Beschreibung**
ErrorStringFehlermeldung
ResultBooleanErgebnis
DocFileDocFile-ObjektAktuelle Mappe
DocFileIDDocFile-IDAktuelle Mappen-ID
LogStringLogging-Informationen
RightsInitialObjektObjekt mit den initialen Berechtigungen
RightsInitialStrStringGACL-String mit den initialen Berechtigungen
RightsWFObjektObjekt mit den Workflow-Berechtigungen
RightsWFStrStringGACL-String mit den Workflow-Berechtigungen
Die Methode "**createGACLString**()" liefert den fertigen GACL-String (ohne diesen direkt in das Feld "**Rights**" zu schreiben). Ab Invoice ***V.1.1.200*** enthält diese Funktion 2 optionale UserExit-Funktionen, um das GACL-Ergebnis zu manipulieren. Die Funktionen können bei Bedarf in eine UserExit-Bibliothek hinzugefügt werden. ```JavaScript /** Die Funktion wird nach dem Erstellen des GACL-Strings ausgeführt. **/ RightsGACL.prototype.ue_BeforeCreateGACLString = function(){ ; } /** Die Funktion wird nach dem Erstellen des GACL-Strings ausgeführt. * In dem Beispiel wird ein zusätzliches Feld 'AdditionalRights' mit zusätzlichen Zugriffsberechtigungen ausgewertet. **/ RightsGACL.prototype.ue_AfterCreateGACLString = function(){ if( this.DocFile.hasField("AdditionalRights") ){ this.Log += "[INFO]["+this.DocFileID+"] has field 'AdditionalRights'" + this.LineBreak; var userObj = {}; var gaclArr = this.GACL.split("\r\n"); for( var i=0; i