Search the FirstSpirit Knowledge Base
Hallo,
ich würde gerne die gesetzten Benutzer Berechtigungen die unter "Extras > Rechte ändern" angezeigt werden auslesen.
Leider erhalte ich über die Funktion "storeElement.getPermission(user)" die berechneten Berechtigungen die der Benutzer für dieses Element besitzt. Gibt es eine andere Funktion die ich noch nicht entdeckt habe, die mir genau die gesetzten Rechte wie in der Oberfläche (unter Extras > Rechte ändern) bereistellt?
Hinweis:
// In diesem Objekt definierte Rechte.
List definedPrincipalPermissions = storeElement.getDefinedPrincipalPermissions();
Iterator definedPrincipalPermissionsIterator = definedPrincipalPermissions.iterator();
while (definedPrincipalPermissionsIterator.hasNext())
{
Principal principal = (Principal)definedPrincipalPermissionsIterator.next();
// Hier erhalte ich nur den Namen der Gruppe / Benutzers aber nicht die gesetzten Rechte, diese ermittele ich wie oben beschrieben über getPermission();
}
FS Version Server: 4.2.454.47473
Viele Grüße
Martin Dirlewanger
Hallo Martin,
ja das geht auf ähnliche Weise (Group durch User ersetzen, Methode getInheritedPrincipalPermissions() durch getDefinedPrincipalPermissions() ersetzen). Das Interface Permission verfügt über Konstanten (siehe API-Doc von FirstSpirit), die es erlauben zu überprüfen, ob bestimmte Rechte gesetzt sind z.B. die Methode canRead(), desweiteren lässt sich mit Hilfe von Permission.PERMISSIONS ein Array der entsprechenden int-Werte auf die die Rechte abgebildet werden auslesen. Darüber könnte man einfach einen Filter implementieren, der die Rechte Sichtbar, Ändern und Lesen filtert und nur die anderen definierten Rechte anzeigt. Wichtig zu wissen ist auch, dass das Recht 'Ordner löschen' die Rechte Sichtbar, Ändern und Lesen voraussetzt, deswegen sind diese auch automatisch gesetzt.
Freundliche Grüße
Ismail
Hallo Martin,
siehe auch hier https://community.e-spirit.com/message/11266
das könnte eventuell weiter helfen.
Freundlich Grüße
Ismail Maaroufi
Hallo Ismail,
danke für deine Antwort, leider liest du dort die Berechtigungen für eine Gruppe aus, diese stimmen natürlich immer mit den gesetzten überein.
Wenn du Berechtigungen von einem Benutzer ausliest, wirst du auf das Problem das ich hier oben beschrieben habe stoßen.
z.B.
Auf einem Element ist für den Benutzer "TestUser" das Recht "Ordner löschen" definiert.
Dieser Benutzer ist in der Gruppe "TestGruppe" enthalten, diese Gruppe hat auf diesem Element die Rechte "ändern, lesen, sichtbar".
Würdest du jetzt mit storeElement.getPermission(user) die Berechtigungen auslesen, würde man die berechneten erhalten: d.h. ändern, lesen, sichtbar, Ordner löschen.
Ich hätte aber gerne nur die definierten Rechte des Benutzers an diesem Element d.h. "Ordner löschen" und nicht die berechneten. Also genau die die mir die Oberfläche unter Extras > Rechte ändern anzeigt .
Viele Grüße
Martin Dirlewanger
Hallo Martin,
ja das geht auf ähnliche Weise (Group durch User ersetzen, Methode getInheritedPrincipalPermissions() durch getDefinedPrincipalPermissions() ersetzen). Das Interface Permission verfügt über Konstanten (siehe API-Doc von FirstSpirit), die es erlauben zu überprüfen, ob bestimmte Rechte gesetzt sind z.B. die Methode canRead(), desweiteren lässt sich mit Hilfe von Permission.PERMISSIONS ein Array der entsprechenden int-Werte auf die die Rechte abgebildet werden auslesen. Darüber könnte man einfach einen Filter implementieren, der die Rechte Sichtbar, Ändern und Lesen filtert und nur die anderen definierten Rechte anzeigt. Wichtig zu wissen ist auch, dass das Recht 'Ordner löschen' die Rechte Sichtbar, Ändern und Lesen voraussetzt, deswegen sind diese auch automatisch gesetzt.
Freundliche Grüße
Ismail