Search the FirstSpirit Knowledge Base
Hallo zusammen,
wenn man in der Beanshell (GuiScriptContext) folgende Zeile ausführt:
context.getConnection().getService(AdminService.class).getUserStorage().getUserByLogin(name).getClass();
erhält man:
class de.espirit.firstspirit.server.usermanagement.UserImpl
führt man die selbe Zeile in einem WorkflowScript (WorkflowScriptContext) aus erhält man:
class de.espirit.firstspirit.access.UserImpl
Die erste von beiden Klassen existiert in der Api nicht, ein import dieser ist auch nicht möglich (Klasse nicht bekannt).
Der Hintergrund ist der, dass die Ergebnisse die man beim Weiterverarbeiten bekommt sehr unterschiedlich sind.
Weiß jemand wieso das so ist und wie ich an die Klasse ran komme und wo ich diese finde, hab auch schon in der Developer-Api nachgeschaut.
Wir haben die Version 4.2.468
Mit freundlichen Grüßen
Alexander Haufler
am besten sollte man hier gegen das Interface arbeiten nicht gegen die Implementierungs-Klasse.
also de.espirit.firstspirit.access.User
de.espirit.firstspirit.server.usermanagement.UserImpl ist vom Typ de.espirit.firstspirit.access.User
siehe auch JavaDoc der API - hier liefert UserStorage#getUserByID(long id) => de.espirit.firstspirit.access.User
bei einer println "DEbug-Ausgabe" zur Laufzeit wird natuerlich die konkrete Implementierungs-Klasse ausgegeben.
ja das mag schon sein, aber die User (de.espirit.firstspirit.access.User) haben keine Zugehörigkeit zu externen Gruppen.
Die User (de.espirit.firstspirit.server.usermanagement.UserImpl) allerdings schon.
Ich möchte prüfen ob ein User einer bestimmten externen (LDAP) Gruppe angehört.
An dieser stelle scheitert man allerdings mit dem access.User.
> aber die User (de.espirit.firstspirit.access.User) haben keine Zugehörigkeit zu externen Gruppen.
doch habe diese nur leider kommt man da nicht ueber die API dran bzw. ueber diese Weg ran.
man koennte natuerlich den weg ueber dss PRojekt bzw. Gruppen gehen, also in etwa ...
Project.getGroups(User user) und Group hat dann u.a. die Methode isExternal() ....
Hier geht es aber nicht um die Gruppe sondern um den User, der User (de.espirit.firstspirit.access.User) gehört in dem Fall nicht zur externen Gruppe, das ist ja das Problem.
Es gibt zwar in der Api die entsprechenden Methoden, die ich mittlerweile alle ausprobiert habe, auch das Beispiel über den Project zu gehen, der "fehlerhafte" Parameter in dem Fall ist ja auch nicht die Methode, sondern der User!!!
> Ich möchte prüfen ob ein User einer bestimmten externen (LDAP) Gruppe angehört.
... Gruppen des User's holen, dann prüfen, ich sehen das PRoblem nicht, denn de.espirit.firstspirit.server.usermanagement.UserImpl ist vom Typ de.espirit.firstspirit.access.User
> der "fehlerhafte" Parameter in dem Fall ist ja auch nicht die Methode, sondern der User!!!
wie sieht denn der Stack aus?
das ist ja das Problem, der User hat keine Zugehörigkeit zu der externen Gruppe.
Ich mach das ja nicht seit gestern, und habe schon alle möglichen Api-Konstelationen ausprobiert.
Egal ich habe das Problem mittlerweile gelöst, werde die Lösung hier aber nicht posten, da ich mich mit der Lösung eher in der Grauzone bewege.
Hallo Herr Haufler,
für ein Projekt können externe Gruppen definiert werden (Server- und Projektkonfigurationen / Projekt / Eigenschaften ändern / Gruppen).
Für die externe Gruppe kann der entsprechende LDAP-DN im Eingabefeld Externe Bezeichnung hinterlegt werden.
Zusätzlich kann für die externe Gruppe festgelegt werden, ob die Gruppe als (Projekt-)Administratorengruppe gelten soll oder nicht.
Im einem Arbeitsablaufsskript können im Anschluss die Gruppen des angemeldeten Benutzers mit dem folgenden Aufruf ermittelt werden:
context.getUserGroups()
(siehe auch Access-API Interface de.espirit.firstspirit.access.store.templatestore.WorkflowScriptContext bzw. de.espirit.firstspirit.access.ClientScriptContext#getUserGroups())
Für jede Gruppe des angemeldeten Benutzers kann mit der Methode .isExternal() geprüft werden, ob es sich bei der Gruppe um eine externe Gruppe handelt (oder nicht).
(siehe auch Access-API Interface de.espirit.firstspirit.access.project.Group#isExternal())
Viele Grüße,
Sascha Rusch
Externe Gruppen unsterstützen die Auflistung ihrer Benutzer nicht. Für externe Gruppen ist es nur die Prüfung möglich, ob ein bestimmter Benutzer in der Gruppe enthalten ist. Das geht über die Methode "Group.isMember(User)".