Alexander_Haufl
I'm new here

User-Klasse nicht in der Api vorhanden

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

0 Kudos
8 Replies
andre
I'm new here

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.

0 Kudos

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.

0 Kudos

> 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() ....

0 Kudos

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!!!

0 Kudos

> 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?

0 Kudos

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.

0 Kudos
rusch
I'm new here

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

0 Kudos

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)".

Peter