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