Search the FirstSpirit Knowledge Base
Hi all,
wenn ich einen Scheduled Task ausführe, bekomme ich eine SecurityException bei dem Versuch, die Projekteinstellungs-Seite zu locken:
à java.lang.SecurityException: changes not allowed for current connection
Als Benutzer wird mir SYSTEM (SYSTEM) ausgegeben, auch wenn ich das Skript als admin ausführen lassen möchte (s. Anhang).
Dazu bitte 2 Fragen beantworten:
- Lösung?
- Warum wird das Skript nicht unter Admin ausgeführt, obwohl ich die Admin-Connection explizit angegeben habe?
Ganz lieben Dank im Voraus & beste Grüße!
Dirk
Hallo Dirk,
mal ins Blaue geraten, unter Scripte als Admin laufen lassen könnte die Lösung sein.
Ansonsten bitte mal das Skript posten.
Viele Grüße
Christoph
Hallo Dirk,
- Lösung?
Den user Service, mit dem Du den globalStore holst, nicht read-only über den context sondern über eine eigene connection holen:
connection.getProjectById(context.getProject().getId()).getUserService();
- Warum wird das Skript nicht unter Admin ausgeführt, obwohl ich die Admin-Connection explizit angegeben habe?
Wie oben erwähnt vermute ich, dass Du den globalStore über einen read-only UserService holst. Nur wenn man eine eigene Connection aufbaut, werden auch die angegebenen Verbindungsdaten benutzt.
Viele Grüsse aus Dortmund,
Holger
Habe es jetzt mit folgendem Code versucht:
context.getConnection().getService(AdminService.class).getConnection()
.getProjectById(context.getProject().getId()).getUserService();
was leider nicht hilft.
Hier das Skript bis zu der Stelle an der es knallt:
import de.espirit.firstspirit.access.store.globalstore.*;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.*;
userService = context.getConnection().getService(AdminService.class).getConnection().getProjectById(context.getProject().getId()).getUserService();
globalStore = (GlobalStoreRoot) userService.getStore(Store.Type.GLOBALSTORE, false);
projectProperties = globalStore.getProjectProperties();
projectProperties.setLock(true);
Viele Grüße,
Dirk
Hallo Dirk,
kannst du bitte noch die Exception und Stacktrace posten?
Danke!
Christoph
userService = context.getConnection().getService(AdminService.class).getConnection().getProjectById(context.getProject().getId()).getUserService();
!=
connection.getProjectById(context.getProject().getId()).getUserService();
Das ist immer noch die read-only connection mit dem System User, und nicht die angegebene Connection mit dem Admin-User!
Hi,
issue erledigt. Wenn ich mich der connection des ServerEnvironment-Objekts aus meinem eigenen Service bediene, haut es hin (auch wenn ich als user nach wie vor SYSTEM ausgegeben bekomme).
Danke & Grüße,
Dirk