OpenERP имеет два вида ограничений безопасности, которые могут быть отнесены к группе пользователей:
- Access Rights является CRUD да/нет флагов (по аналогии с правами доступа Unix FS) и позволяют за модель контроля доступа , Они указывают, могут ли члены этой группы выполнять операцию Create, Read, Update и Delete в любом документе определенной модели документа (например, задачи проекта). Политикой по умолчанию является DENY, поэтому по умолчанию любая операция будет отклонена, если пользователь явно не имеет права выполнять ее через права доступа своих групп.
- Record Rules - фильтры, применяемые к операциям CRUD, и позволяют для каждого документа контроль доступа, когда права доступа уже предоставлены. Пользователи будут иметь возможность выполнять операцию только для данного документа, если документ соответствует хотя бы одному из правил записи. Политика по умолчанию ALLOW, поэтому, если для данной модели не существует правила, все документы этой модели могут быть доступны пользователям, имеющим необходимые права доступа.
Права доступа и правила записи также могут быть определены глобально, не присваивая их определенной группе, и в этом случае они применяются ко всем. Существует одна ошибка для правил записи: глобальные правила НЕ могут быть смягчены другими правилами (специально!), Поэтому используйте с осторожностью.
В вашем случае похоже, что вы должны определить одно дополнительное правило записи в группе Project Project, которое явно ограничивает доступ к задачам проекта к вашим собственным задачам (и, предположительно, тем, которые еще не назначены). Вам нужно создать новую запись в меню Правила безопасности с этими параметрами:
- объект/модель:
project.task
- Имя:
See own tasks only
- домен:
['|',('user_id','=',False),('user_id','=',user.id)]
- (средства: собственные задачи и неназначенные)
- распространяется на чтение:
[x]
- применяется для записи:
[x]
- применяются для создания:
[x]
- применяется для удаления:
[x]
- групп:
Project/User
domain
из правила звукозаписывающего является стандартной областью OpenERP, которая оценивается по записи, на которых вы пытаетесь выполнить операцию, и можете ссылаться на переменную user
, которая содержит данные текущего пользователя (технически, browse_record
для текущего пользователя).Ищите search()
в списке ORM methods для полного описания domain
.
Если вы хотите, чтобы специальные пользователи (например, Менеджеры проектов) просматривали все задачи в системе, вы можете отключить это правило для них, добавив другое правило в группу Project Manager, которая позволяет получить доступ ко всем задачам. Существует специальный «фильтр домена», который означает «ALLOW ALL» и полезен для ослабления еще более строгих правил: [(1,'=',1)]
.
Примечание: ознакомьтесь с существующими правилами записи, чтобы увидеть, что они делают в первую очередь, и не забудьте прочитать объяснения в форме правила записи, когда вы добавляете свои. И помните, что если вы делаете что-то неправильно с правами доступа и правилами записи, вы всегда можете исправить беспорядок с учетной записью admin
, так как эти ограничения безопасности не применяются к admin
(аналогично пользователю root
в Unix).
Хороший ответ, Оливье, я не знал о правилах записи. Я рад видеть, что вы становитесь постоянным участником здесь. –
поблагодарить u за подробный ответ. это работало для меня [('user_id', '=', user.id)] –
см. здесь для правил записи в XML: http://help.openerp.com/question/12667/setting-up-rules-access- right-in-xmlcsv-files/ –