|  |   | 
| Строка 15: | Строка 15: | 
|  | * aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]] |  | * aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]] | 
|  |  |  |  | 
| − | ===Стандартные права доступа для хранилищ и рабочих процессов===
 |  | 
| − | 
 |  | 
| − | В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
 |  | 
| − | 
 |  | 
| − | * view - право просматривать объект из таблицы
 |  | 
| − | * edit - право редактировать объект из таблицы
 |  | 
| − | * create - право создавать новый объект в таблице
 |  | 
| − | * delete - право удалять объект из таблицы
 |  | 
| − | * viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)
 |  | 
| − | * viewextended - право просматривать расширенную информацию по объекту (все поля)
 |  | 
| − | * edit:имя_поля - право редактировать отдельное поле
 |  | 
| − | * view:имя_поля - право просматривать отдельное поле
 |  | 
| − | * changestatus:from:статус - изменять статус с указанного
 |  | 
| − | * changestatus:to:статус - изменять статус на указанный
 |  | 
| − | * changestatus:all - вообще изменять статус
 |  | 
| − | 
 |  | 
| − | В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
 |  | 
| − | 
 |  | 
| − | === Работа с правами ===
 |  | 
| − | 
 |  | 
| − | ==== Имена плагинов ====
 |  | 
| − | Все плагины, отвечающие за работу с полномочиями должны иметь префикс acl. Все функции, которые предоставляют список прав также должны иметь этот префикс.
 |  | 
| − | 
 |  | 
| − | ==== Добавление полномочий в плагин ====
 |  | 
| − | Название функции, в которой хранится список прав для плагина - acldefault(). Каждый плагин, который предоставляет собственные полномочия должен реализовывать (implements) интерфейс dof_storage_acl_interface.
 |  | 
| − | 
 |  | 
| − | ==== Взаимодействие с другими плагинами ====
 |  | 
| − | Общее правило такое: другие плагины могут зависеть от плагинов прав доступа, а плагины прав доступа не могут зависеть от остальных плагинов.
 |  | 
| − | Каждая должность (position) должна сопоставляться с с доверенностью (warrant).
 |  | 
| − | Каждое назначение на должность (appointment) должно сопоставляться с одним или несколькими применениями доверенностей (aclwarrantagents)
 |  | 
| − | 
 |  | 
| − | При добавлении новой записи в таблицу appointments в таблице warrantagents создается запись с данными из записи appointments и полем aclid=0. Количество записей с aclid=0 всегда соответствует количеству активных назначений на должность.
 |  | 
| − | 
 |  | 
| − | При установке плагина aclwarrants система автоматически создает мандаты для всех типов базовых ролей, которые мы поддерживаем. При установке, обновлении и удалении плагинов эти мандаты автоматически обновляются. Пользователям базовые роли не назначаются.
 |  | 
| − | 
 |  | 
| − | При создании новой должности мы можем создать для нее доверенность (отдельная форма в плагине positions). При создании мандата для должности мы можем указать одну из стандартных ролей, тогда мандат роли автоматически унаследует все полномочия из мандата этой роли (и будет автоматически обновляться вместе с ней). При назначении на должность мы делаем привязку персоны к мандату, который привязан к назначеемой должности с указанием подразделения и сроков действия (если они есть).
 |  | 
| − | 
 |  | 
| − | Права, которые пользователь получает при назначении на должность, указываются как записи в таблице aclwarrantagents, с указанием id мандата, departmentid=0 и personid=0.
 |  | 
|  |  |  |  | 
|  | ===Дополнительные методы:=== |  | ===Дополнительные методы:=== | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
|  |  |  |  | 
|  | [[Категория:Разработка]] |  | [[Категория:Разработка]] | 
|  | [[Категория:Плагины_storages]] |  | [[Категория:Плагины_storages]] |