Questions & Answers

SOLVED
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

Type a product name