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

Материал из DOF
Перейти к: навигация, поиск
(Перехватываемые события)
 
(не показано 18 промежуточных версий 5 участников)
Строка 1: Строка 1:
 
{{Infobox_Plugin
 
{{Infobox_Plugin
| name = aclcapabilities
+
| name = acl
 
| type = storages
 
| type = storages
 
}}
 
}}
 +
 +
===Кеширование===
 +
Права кешируются на уровне сесси пользователя.
 +
Если какие-то права были добавлены, но кеш не сбросился, то необходимо перезайти в систему для сброса сессии и обновления кеш хранилища.
  
 
===Таблица в базе данных===
 
===Таблица в базе данных===
''aclcapabilities'' - справочник полномочий.
+
''acl'' - справочник полномочий. Подробные правила работы с полномочиями описаны в разделе: [[Разработка:Управление_доступом | Управление доступом]].
  
 
====Подробный формат полей в таблице:====
 
====Подробный формат полей в таблице:====
 
* id - номер записи  
 
* id - номер записи  
* departmentid - id подразделения из [[Разработка:storages/departments | departments ]], в котором выдано указанное полномочие, или 0 если полномочие действует в любом подразделении
 
 
* code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)
 
* code - код полномочия (текстовое, необязательное, при указании кода проверяется уникальность)
 
* plugintype - тип плагина (im, storage, workflow, sync, modlib)
 
* plugintype - тип плагина (im, storage, workflow, sync, modlib)
 
* plugincode - код плагина
 
* plugincode - код плагина
 
* objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)
 
* objectid - id объекта к которому дается доступ (или 0 если доступ дается ко всем объектам)
* warrantid - id мандата или доверенности из [[Разработка:storages/aclwarrants | aclwarrants ]], на основании которой было выдано полномочие
+
* aclwarrantid - id записи из таблица [[Разработка:storages/aclwarrants | aclwarrants ]]
 
 
===Дополнительные методы:===
 
  
 +
==== Стандартные полномочия для хранилищ и рабочих процессов ====
 +
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
  
 +
* view - право просматривать объект из таблицы
 +
* edit - право редактировать объект из таблицы
 +
* create - право создавать новый объект в таблице
 +
* delete - право удалять объект из таблицы
 +
* viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)
 +
* viewextended - право просматривать расширенную информацию по объекту (все поля)
 +
* edit:имя_поля - право редактировать отдельное поле
 +
* view:имя_поля - право просматривать отдельное поле
 +
* changestatus - вообще изменять статус (с любого на любой)
 +
* changestatus:from:статус - изменять статус с указанного
 +
* 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 в случае ошибки
  
  
[[Категория:Разработка]]
+
[[Категория:Управление доступом]]
[[Категория:Плагины_storages]]
 

Текущая версия на 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 в случае ошибки