Разработка:storages/acl — различия между версиями
| Dido86 (обсуждение | вклад) |  (→Перехватываемые события) | ||
| (не показано 14 промежуточных версий 5 участников) | |||
| Строка 1: | Строка 1: | ||
| {{Infobox_Plugin | {{Infobox_Plugin | ||
| − | | name =  | + | | name = acl | 
| | type = storages | | type = storages | ||
| }} | }} | ||
| + | |||
| + | ===Кеширование=== | ||
| + | Права кешируются на уровне сесси пользователя. | ||
| + | Если какие-то права были добавлены, но кеш не сбросился, то необходимо перезайти в систему для сброса сессии и обновления кеш хранилища. | ||
| ===Таблица в базе данных=== | ===Таблица в базе данных=== | ||
| − | '' | + | ''acl'' - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: [[Разработка:Управление_доступом | Управление доступом]]. | 
| ====Подробный формат полей в таблице:==== | ====Подробный формат полей в таблице:==== | ||
| Строка 13: | Строка 17: | ||
| * plugincode - код плагина | * plugincode - код плагина | ||
| * objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам) | * objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам) | ||
| − | + | * aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]] | |
| + | ==== Стандартные полномочия для хранилищ и рабочих процессов ==== | ||
| В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения: | В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения: | ||
| Строка 25: | Строка 30: | ||
| * edit:имя_поля - право редактировать отдельное поле | * edit:имя_поля - право редактировать отдельное поле | ||
| * view:имя_поля - право просматривать отдельное поле | * view:имя_поля - право просматривать отдельное поле | ||
| + | * changestatus - вообще изменять статус (с любого на любой) | ||
| * changestatus:from:статус - изменять статус с указанного | * changestatus:from:статус - изменять статус с указанного | ||
| * changestatus:to:статус - изменять статус на указанный | * changestatus:to:статус - изменять статус на указанный | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права. | ||
| + | Отношение указывается через прямой слеш "/".  | ||
| + | Примеры: | ||
| + | * 'edit/owner' - право редактировать объект для владельца. | ||
| + | * 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта | ||
| + | ===События=== | ||
| + | В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином. | ||
| + | ====Перехватываемые события==== | ||
| + | {| border="1" | ||
| + |  |+ Таблица событий, которые перехватывает этот плагин | ||
| + |  ! Тип плагина | ||
| + |  ! Код плагина | ||
| + |  ! Код события | ||
| + |  ! Доп. данные | ||
| + |  ! Пояснение | ||
| + |  |- | ||
| + |  | acl | ||
| + |  | storage | ||
| + |  | insert | ||
| + |  | | ||
| + |  | Сбрасывается кеш хранилище прав | ||
| + |  |- | ||
| + |  | acl | ||
| + |  | storage | ||
| + |  | delete | ||
| + |  | | ||
| + |  | Сбрасывается кеш хранилище прав | ||
| + |  |} | ||
| + | ====Генерируемые события==== | ||
| + | - | ||
| + | ===Дополнительные методы:=== | ||
| + | ===='''get_persons_acl_by_code($plugintype, $plugincode, $aclcode, $departmentid = 0, $objectid = 0)'''==== | ||
| + | Получить список персон имеющих указанное полномочие | ||
| + | ''Аргументы:'' | ||
| + | * int $plugintype - тип плагина деканата | ||
| + | * int $plugincode - код плагина деканата | ||
| + | * int $aclcode - код права | ||
| + | * int $departmentid - id подразделения | ||
| + | * int $objectid - id объекта | ||
| + | ''Возвращает значение:'' | ||
| + | * array|false - массив записей из БД, содержащих идентификатор пользователя и подразделения или false в случае ошибки | ||
| − | [[Категория: | + | [[Категория:Управление доступом]] | 
| − | |||
Текущая версия на 10:51, 2 марта 2018
| Плагин | |
| Название | acl | 
| Тип | storages | 
Кеширование
Права кешируются на уровне сесси пользователя. Если какие-то права были добавлены, но кеш не сбросился, то необходимо перезайти в систему для сброса сессии и обновления кеш хранилища.
Таблица в базе данных
acl - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: Управление доступом.
Подробный формат полей в таблице:
- id - номер записи
- code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)
- plugintype - тип плагина (im, storage, workflow, sync, modlib)
- plugincode - код плагина
- objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)
- aclwarrantid - id записи из таблица aclwarrants
Стандартные полномочия для хранилищ и рабочих процессов
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
- view - право просматривать объект из таблицы
- edit - право редактировать объект из таблицы
- create - право создавать новый объект в таблице
- delete - право удалять объект из таблицы
- viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)
- viewextended - право просматривать расширенную информацию по объекту (все поля)
- edit:имя_поля - право редактировать отдельное поле
- view:имя_поля - право просматривать отдельное поле
- changestatus - вообще изменять статус (с любого на любой)
- changestatus:from:статус - изменять статус с указанного
- changestatus:to:статус - изменять статус на указанный
Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права.
Отношение указывается через прямой слеш "/". 
Примеры:
- 'edit/owner' - право редактировать объект для владельца.
- 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта
События
В этом разделе описан список всех событий, которые генерируются, перехватываются и обрабатываются этим плагином.
Перехватываемые события
| Тип плагина | Код плагина | Код события | Доп. данные | Пояснение | 
|---|---|---|---|---|
| acl | storage | insert | Сбрасывается кеш хранилище прав | |
| acl | storage | delete | Сбрасывается кеш хранилище прав | 
Генерируемые события
-
Дополнительные методы:
get_persons_acl_by_code($plugintype, $plugincode, $aclcode, $departmentid = 0, $objectid = 0)
Получить список персон имеющих указанное полномочие
Аргументы:
- int $plugintype - тип плагина деканата
- int $plugincode - код плагина деканата
- int $aclcode - код права
- int $departmentid - id подразделения
- int $objectid - id объекта
Возвращает значение:
- array|false - массив записей из БД, содержащих идентификатор пользователя и подразделения или false в случае ошибки

