Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich versuch über die Beanshell Console folgendes Script auszuführen, leider haue ich mir immer alle Berechtigungen weg.
Die Berechtigungen wurden über das CMS_INPUT_PERMISSION gesetzt und einige der gesetzten Berechtigungen möchte ich wieder wegnehmen.
Ich würde behaupten, zwischen setAllow und setMetaFormData müsste ich noch sicherstellen das die Änderungen in das DataForm(meta) geschrieben wird.
Server-Version: 5.0.606.65744
e.setLock(true, false);
meta=e.getMetaFormData();
perms=meta.get(context.getProject().getMasterLanguage(),"roles").get();
roles = perms.getAllowed("access");
roles.remove("RollenName");
perms.setAllowed("access",roles);
// roles hat noch die Werte die ich haben möchte
//nach setAllowed sind am meta Objekt alle Permissions weg.
//Hier muss ich noch etwas anderes machen , denn editot holen?
//Wenn ja wie?
e.setMetaFormData(meta);
e.save("Wiegele beanshell");
e.setLock(false, false);
Danke fürs lesen.
Hallo zusammen,
danke an Herrn Hofmann, für die richtige Lösung.
Es ist in der Tat so, dass getAllowed lediglich die Berechtigungen OHNE den kompletten Pfad zurückliefert (=> works as specified).
Den Rest bekommt man über PermissionService.
Hier ein Beispiel, das in Ihrem Fall funktionieren sollte:
projectID = context.getProject().getId();
connection = context.getConnection();
project = connection.getProjectById(projectID);
userService = project.getUserService();
permServ = context.getConnection().getService("PermissionService");
permServ.getRoot("MeinDokument").getGroupById("meineRolle").getPath();
Hallo zusammen,
keiner eine Ahnung, ob ich etwas falsch mache oder es sich um einen Bug handelt?
Hallo Jan,
ich sehe leider nicht, das mir das Posting weiterhelfen könnte
In dem Posting geht es um Redakteursberechtigungen, bei mir geht es um Berechtigungen für ein SAP Portal die über die CMS_INPUT_PERMISSION gesetzt werden.
Gruß Dirk
Hallo Dirk,
Ok, ich sehe in deinem Skript erstmal keinen Fehler. Kannst du mal ausprobieren, ob du an den permissions etwas anderes setzen kannst und ob das ankommt? zb setInherited(true/false);
Grüße
Jan
Hallo Jan,
nein setInherited kann ich auf true oder false setzten, bringt nichts
e.setLock(true, false);
meta=e.getMetaFormData();
perms=meta.get(context.getProject().getMasterLanguage(),"roles").get();
perms.setInherited(true); oder perms.setInherited(false); bringen nichts
e.setMetaFormData(meta);
e.save("Wiegele beanshell");
e.setLock(false, false);
Gruß Dirk
Hallo Jan,
scheinbar habe ich etwas übersehen.
perms.setInherited(true); oder perms.setInherited(false); funktioniert doch.
e.setMetaFormData(meta);
e.save("Wiegele beanshell");
e.setLock(false, false);
Sobald ich versuche die Methode setAllowed zu verwenden sind die getAllowed Berechtigungen weg.
perms.setAllowed("access",roles);
Gruß Dirk
Hallo Jan,
ich denke den Fehler gefunden zu haben.
Mit perms.getAllowed("access"); geht leider das Präfix der Berechtigung verloren.
Präfix "/Docname1/Docname2/Docname3/"
Eigentliche Berechtigung "Berechtigung1"
"/Docname1/Docname2/Docname3/Berechtigung1"
Die Ausgabe von formdata liefert im Okay Fall:
<<TEMPLATECONTENT><CMS_VALUE name="roles"><LANG id="§" set="1"><PERMISSIONS document="documentName" inherit="0" priority="allow"><OPERATION deselected="" name="access" selected="/Docname1/Docname2/Docname3/Berechtigung1"/></PERMISSIONS></LANG></CMS_VALUE><CMS_VALUE name="fs_portal_cm_modified"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="fs_portal_cm_contenttype"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="fs_portal_mdkm_editor_id"><LANG id="§" set="0"/></CMS_VALUE><CMS_VALUE name="childCount"><LANG id="§" set="0"/></CMS_VALUE></TEMPLATECONTENT>>
In dem TreeSet stehen aber die Berechtigungen ohne Präfix.
roles = perms.getAllowed("access");
<[Berechtigung1]>
Nach dem Speichern, werden die Werte auch übernommen, passen aber nicht zu der Konfiguration vom CMS_INPUT_PERMISSION und somit sieht es aus als wären alle Berechtigungen gelöscht worden.
Sieht nach BUG aus.
getAllowed muss die richtigen Werte liefern.
Gruß Dirk
Hallo Dirk,
benötigst Du noch weitere Hilfe oder haben Dir die Antworten von Jan und TechnicalSupport bereits geholfen?
In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.
Viele Grüße
Marian
Hallo zusammen,
danke an Herrn Hofmann, für die richtige Lösung.
Es ist in der Tat so, dass getAllowed lediglich die Berechtigungen OHNE den kompletten Pfad zurückliefert (=> works as specified).
Den Rest bekommt man über PermissionService.
Hier ein Beispiel, das in Ihrem Fall funktionieren sollte:
projectID = context.getProject().getId();
connection = context.getConnection();
project = connection.getProjectById(projectID);
userService = project.getUserService();
permServ = context.getConnection().getService("PermissionService");
permServ.getRoot("MeinDokument").getGroupById("meineRolle").getPath();