Questions & Answers

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

Type a product name