wiegele
I'm new here

Permission via API setzen

Jump to solution

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.

0 Kudos
1 Solution

Accepted Solutions
wiegele
I'm new here

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

View solution in original post

0 Kudos
9 Replies
wiegele
I'm new here

Hallo zusammen,

keiner eine Ahnung, ob ich etwas falsch mache oder es sich um einen Bug handelt?

0 Kudos

Hallo Dirk,

hilft dir vielleicht dieses Posting weiter?

Grüße

Jan

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos
wiegele
I'm new here

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

0 Kudos