Разработка:storages/acl — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
м (Таблица в базе данных)
(Информация по рпботе с полномочиями перенесена на страницу "управление доступом")
Строка 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]]

Версия 23:06, 13 апреля 2011

Плагин
Название acl
Тип storages


Таблица в базе данных

acl - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: Управление доступом.

Подробный формат полей в таблице:

  • id - номер записи
  • code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)
  • plugintype - тип плагина (im, storage, workflow, sync, modlib)
  • plugincode - код плагина
  • objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)
  • aclwarrantid - id записи из таблица aclwarrants


Дополнительные методы: