2016-01-06 4 views
0

Я использую Odoo v8 и нуждаюсь в средствах предотвращения определенных пользователей (предпочтительно (предпочтительно) в команде продаж или в группе пользователей) от доступа к определенным контактам (назначенным другая команда продаж) или контакты вообще.Odoo v8: Как ограничить доступ пользователей к контактам

Я попытался достичь этого через Record rules, но, похоже, это не работает.

ответ

2

Пользователи и роли пользователей являются критическими моментами, касающимися внутренней безопасности в OpenERP. OpenERP предоставляет несколько механизмов безопасности, касающихся ролей пользователей, которые реализованы на сервере OpenERP. Они реализованы на самом низком уровне сервера, который является движком ORM. OpenERP различает три разных понятия:

  • пользователь: человек, указанный по его логину и паролю. Обратите внимание, что все сотрудники компании не обязательно являются пользователями OpenERP; пользователь - это тот, кто обращается к приложению.
  • группа: группа пользователей, имеющая некоторые права доступа. Группа предоставляет свои права доступа пользователям, принадлежащим к группе. Пример: менеджер по продажам, бухгалтер и т. Д.
  • правило безопасности: правило, определяющее права доступа, предоставляемые данной группе своим пользователям. К данному ресурсу привязаны правила безопасности, например модель счета-фактуры.

Правила безопасности прилагаются к группам. Пользователи назначаются нескольким группам. Это дает пользователям права, которые привязаны к их группам. Поэтому управление ролями пользователя осуществляется путем управления группами пользователей и добавления или изменения правил безопасности, прикрепленных к этим группам.

Пользователи

Пользователи представляют физические лица с помощью OpenERP. Они идентифицируются с логином и паролем, они используют OpenERP, они могут редактировать свои собственные настройки ... По умолчанию у пользователя нет права доступа. Чем больше мы назначаем группы пользователю, тем больше он или она получает права на выполнение некоторых действий. Пользователь может принадлежать нескольким группам.

группы пользователей

Группы определяют права доступа к различным ресурсам. Пользователь может принадлежать нескольким группам. Если он принадлежит нескольким группам, мы всегда используем группу с наивысшими правами для выбранного ресурса. Группа может наследовать все права от другой группы

прав

правила безопасности присоединены к группам. Вы можете назначить несколько правил безопасности на уровне группы, каждое правило будучи одной из следующих типов:

- access rights are global rights on an object, 
- record rules are records access filters, 
- fields access right, 
- workflow transition rules are operations rights. 

Вы также можете определить правила, которые являются глобальными, т.е. они применяются ко всем пользователям, без разбора из групп они принадлежать. Например, правила нескольких компаний являются глобальными; пользователь может видеть только счета-фактуры компаний, к которым он принадлежит.

Что касается конфигурации, сложно иметь стандартные конфигурации по умолчанию, соответствующие всем приложениям.Поэтому, как и SAP, OpenERP по умолчанию предварительно настроен с использованием лучших практик.

Права доступа

права доступа являются правила, которые определяют доступ пользователь может иметь на конкретном объекте. Эти глобальные права определяются для каждого типа документа или модели. Права следуют модели CRUD: создавать, читать (искать), обновлять (писать), удалять. Например, вы можете определить правила создания счета. По умолчанию добавление права на объект дает право на все записи этого конкретного объекта.

Правила записи

При обращении к объекту, записи фильтруются на основе записей правил. Поэтому правила записи или фильтры доступа - это фильтры, которые ограничивают записи объекта, к которому может обратиться группа. Правило записи - это условие, которое каждая запись должна удовлетворять для создания, чтения, обновления (записи) или удаления. Записи, которые не соответствуют ограничениям, фильтруются.

Например, вы можете создать правило, чтобы ограничить группу таким образом, чтобы пользователи этой группы увидели возможности для бизнеса, в которых он или она помечены как продавец. Правило может быть продавцом = connected_user. С этим правилом будут отображаться только записи, соответствующие правилу.

права доступа Поле

Новое в версии 7.0.

OpenERP теперь поддерживает реальный контроль доступа на уровне поля, а не только на стороне обзора. Раньше уже можно было установить атрибут групп на элементе <field> (или на самом деле большинство элементов представления), но только с эффектами косметики: элемент был невидим на стороне клиента, хотя он все еще отлично доступен для доступа на чтение и запись на Уровень RPC.

Начиная с OpenERP 7.0 существующее поведение сохраняется на уровне представления, но атрибут новых групп доступен для всех полей модели, вводя контроль доступа на уровне модели в каждом поле. Синтаксис такой же, как и для атрибута зрения уровня:

_columns = { 
    'secret_key': fields.char('Secret Key', groups="base.group_erp_manager,base.group_system") 
} 

Существует большая разница с группами зрения уровня атрибутов: ограничение доступа на уровне модели на самом деле означает, что поле будет полностью недоступен для пользователи, которые не принадлежат к авторизованным группам:

  • Ограниченные поля будут полностью удалены из всех связанных видов, а не только скрыты. Это важно иметь в виду, поскольку это означает, что значение поля не будет доступно вообще на стороне клиента и, таким образом, недоступно, например. для вызовов on_change.
  • Ограниченные поля не будут возвращены как часть вызова fields_get() или fields_view_get() Это, во избежание их появления в списке полей, доступных для расширенных фильтров поиска, например. Это не мешает получать список полей модели, напрямую запрашивая ir.model.fields, что хорошо.
  • Любая попытка прямого чтения или записи значений ограниченных полей приведет к исключению AccessError.
  • Как следствие предыдущего пункта, ограниченные поля будут недоступны для использования в фильтрах поиска (домены) или что-либо, что потребует доступа для чтения или записи.
  • Вполне возможно установить атрибуты групп для одного и того же поля как на уровне модели, так и на уровне представления, даже с разными значениями.Оба будут нести свой эффект, причем ограничение уровня модели имеет приоритет и полностью удаляет поле в случае ограничения.

Примечание

Испытания, связанные с этой функцией в OpenERP/тесты/test_acl.py.

Предупреждение

На момент написания реализации этой функции является частичной и пока не ограничивает чтения записи доступа/RPC к полю. Соответствующий тест уже написан, но в настоящее время отключен.

0

Вы можете добавить Правило для группы пользователей. Я просто сделал это, и все работает нормально.

Смежные вопросы