Вкладка общего доступа «можно добавить» для папочного архетипа не работает должным образом - PullRequest
2 голосов
/ 24 февраля 2012

Я разработал пользовательский тип содержимого папок в plone 4; В XML-файле, в котором указан профиль этого типа контента, я определил некоторые другие типы контента, которые можно добавить в эту папку как содержимое. В файле rolemap.xml у меня есть следующие настройки:

<permission name="my permission" acquire="False">
  <role name="Manager" />
  <role name="Owner" />
</permission>

Те же настройки применяются к разрешенным типам контента 'children'.

Так что в общем я не хочу, чтобы кто-либо, кроме владельца (и, конечно, администратора), мог редактировать объект. Я думаю, что владелец мог бы сделать это явно делегировать разрешение на свой объект через вкладку «Обмен». Но когда владелец предоставляет права «может добавить» и «может редактировать» другому пользователю, когда этот другой пользователь входит в систему, он может редактировать объект папки, но не может добавлять элементы внутри, как это делает меню «Добавить новый». не показывать, и это не просто проблема пользовательского интерфейса, например когда он звонит по URL

http://<myhost>/<mysite>/<myfolderishobject>/createObject?type_name=<myallowedType>

появляется возможность добавления объекта внутри формы, но когда он отправляет его, он получает сообщение «недостаточно привилегий».

Пара дополнительных наблюдений: и владелец папки, и делегированный пользователь принадлежат к одной группе, и ничего не изменится, если я установлю для атрибута 'receive' в rolemap значение True.

Интересно, проблема в моей конфигурации или вызвана ошибкой?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Plone использует модель безопасности на основе ролей , сначала посмотрите на нее, она объяснит следующее.Когда на вкладке «Общий доступ» вы даете пользователю разрешение «добавить», фактически вы действительно назначаете ему роль Contributor.Короче говоря, для того, чтобы это работало с вашим типом контента, вам нужно было бы разрешить любому, кто имеет роль участника, добавлять, то есть

<permission name="my permission" acquire="False">
  <role name="Manager" />
  <role name="Owner" />
  <role name="Contributor" />      
</permission>

Имейте в виду, что другие пользователи могут получить роль Contributor с более высокого уровня.папки тоже.

0 голосов
/ 28 февраля 2012

Хорошо, чтобы другие участники не могли получить роль участника из родительских папок, решение добавляет следующую строку кода: self. ac_local_roles_block = True

перед переиндексацией объектабезопасность самого папочного объекта

...