|
|
| Строка 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]] |