Разработка:Управление доступом — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
м (Плагины необходимые для системы управления доступом)
(Общие правила и требования)
(не показано 5 промежуточных версий 2 участников)
Строка 12: Строка 12:
 
=== Общие правила и требования ===
 
=== Общие правила и требования ===
 
* Сторонние плагины могут зависеть от плагинов прав доступа, а плагины прав доступа не могут зависеть от остальных плагинов, и извлекать информацию из них (за исключением события установки/обновления плагина).
 
* Сторонние плагины могут зависеть от плагинов прав доступа, а плагины прав доступа не могут зависеть от остальных плагинов, и извлекать информацию из них (за исключением события установки/обновления плагина).
* Каждый плагин, предоставляющий права доступа должен реализовывать интерфейс dof_storage_acl_interface
+
* Каждый плагин, предоставляющий права доступа должен описывать права в функции acldefault()
** Список и структура прав доступа описывается в функции acldefault()
 
 
** Формат массива:  
 
** Формат массива:  
 
<pre>
 
<pre>
Строка 25: Строка 24:
 
* Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
 
* Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
 
* В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
 
* В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
 
+
* При построении прав на смену статуса объектов деканата имеет значение лишь то, в какой статус будет осуществлен перевод. Следовательно, необходимо реализовывать только права changestatus:to:СТАТУС.
 
+
** Право changestatus:from:СТАТУС следует устанавливать только для ограничения возможности вывода из спецстатусов.
 +
** Право changestatus без модификаторов, дает право перевода из любого статуса в любой, кроме специальных (для которых объявлено право changestatus:from:Статус). Право changestatus:to:Статус дает право на перевод в целевой статус из любого другого, кроме специальных, для которых объявлено право changestatus:from:Статус.
  
 
=== Как происходит процесс установки прав ===
 
=== Как происходит процесс установки прав ===
Строка 35: Строка 35:
 
=== Полномочия (acl) ===
 
=== Полномочия (acl) ===
 
* Полномочия не имеют статусов, поэтому при удалении плагина все полномочия, принадлежащие ему также физически удаляются из таблицы
 
* Полномочия не имеют статусов, поэтому при удалении плагина все полномочия, принадлежащие ему также физически удаляются из таблицы
 
+
* Для хранилищ и рабочих процессов существуют [[ Разработка:storages/acl#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D1.8B.D0.B5_.D0.BF.D0.BE.D0.BB.D0.BD.D0.BE.D0.BC.D0.BE.D1.87.D0.B8.D1.8F_.D0.B4.D0.BB.D1.8F_.D1.85.D1.80.D0.B0.D0.BD.D0.B8.D0.BB.D0.B8.D1.89_.D0.B8_.D1.80.D0.B0.D0.B1.D0.BE.D1.87.D0.B8.D1.85_.D0.BF.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81.D0.BE.D0.B2 | стандартные полномочия ]]
==== Стандартные полномочия для хранилищ и рабочих процессов ====
+
* Полномочия проверяются только тем плагином, в котором они содержатся. То есть - из im/persons можно проверять только права im/persons, из storage/persons только права storage/persons. Нельзя проверять из одного плагина права другого плагина.
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
 
 
 
* view - право просматривать объект из таблицы
 
* edit - право редактировать объект из таблицы
 
* create - право создавать новый объект в таблице
 
* delete - право удалять объект из таблицы
 
* viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)
 
* viewextended - право просматривать расширенную информацию по объекту (все поля)
 
* edit:имя_поля - право редактировать отдельное поле
 
* view:имя_поля - право просматривать отдельное поле
 
* changestatus:from:статус - изменять статус с указанного
 
* changestatus:to:статус - изменять статус на указанный
 
* changestatus:all - вообще изменять статус
 
 
 
Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права.
 
Отношение указывается через прямой слеш "/".  
 
Примеры
 
* 'edit/owner' - право редактировать объект для владельца.
 
* 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта
 
  
 
=== Мандаты и доверенности (warrants) ===
 
=== Мандаты и доверенности (warrants) ===

Версия 14:12, 22 мая 2017

Управление доступом

На этой странице содержится вся основная информация по управлению доступом. "Электронный Деканат" имеет собственную систему полномочий, которая дополняет систему полномочий moodle, и позволяет реализовать более гибкое управление правами.

Общая информация

Плагины необходимые для системы управления доступом

  • acl - список полномочий. Хранит информацию о том в каком плагине какие полномочия существуют.
  • aclwarrants - Мандаты и доверенности.
  • aclwarrantagents - Применение доверенностей. Определяет, каким пользователям какие доверенности выданы.

Общие правила и требования

  • Сторонние плагины могут зависеть от плагинов прав доступа, а плагины прав доступа не могут зависеть от остальных плагинов, и извлекать информацию из них (за исключением события установки/обновления плагина).
  • Каждый плагин, предоставляющий права доступа должен описывать права в функции acldefault()
    • Формат массива:
array(
    'view' => array('teacher', 'manager'),
    'edit' => array('manager')
);

В качестве ключей указывается то право, которое назначается, а значением служит массив ролей, которые получают это право. Список стандартных ролей можно посмотреть в плагине aclwarrants

  • Все плагины, отвечающие за работу с полномочиями имеют префикс acl.
  • Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
  • В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
  • При построении прав на смену статуса объектов деканата имеет значение лишь то, в какой статус будет осуществлен перевод. Следовательно, необходимо реализовывать только права changestatus:to:СТАТУС.
    • Право changestatus:from:СТАТУС следует устанавливать только для ограничения возможности вывода из спецстатусов.
    • Право changestatus без модификаторов, дает право перевода из любого статуса в любой, кроме специальных (для которых объявлено право changestatus:from:Статус). Право changestatus:to:Статус дает право на перевод в целевой статус из любого другого, кроме специальных, для которых объявлено право changestatus:from:Статус.

Как происходит процесс установки прав

При установке, обновлении или удалении любого плагина, если он предоставляет права доступа - то в функциях upgrade(), delete(), и install() нужно вызывать функцию save_roles() плагина acl .

Правила работы с правами доступа

Полномочия (acl)

  • Полномочия не имеют статусов, поэтому при удалении плагина все полномочия, принадлежащие ему также физически удаляются из таблицы
  • Для хранилищ и рабочих процессов существуют стандартные полномочия
  • Полномочия проверяются только тем плагином, в котором они содержатся. То есть - из im/persons можно проверять только права im/persons, из storage/persons только права storage/persons. Нельзя проверять из одного плагина права другого плагина.

Мандаты и доверенности (warrants)

  • Действия при удалении мандата или доверенности
    • Основным способом удаления мандата следует считать перевод записи в статус "archive"
    • Все дочерние доверенности и мандаты также перестают действовать
    • Прекращают действия все применения полномочий ( aclwarrantagents ) которые были назначены указанным мандатом.
  • При установке прав новым плагином все новые права добавляются к стандартным доверенностям
  • Плагины не могут добавлять свои доверенности при установке
  • Стандартные доверенности не могут быть назначены пользователям
  • Если запрещается наследование для доверенности, которую раньше можно было наследовать - то старые дочерние доверенности продолжают свое действие, но новые создать нельзя

Синхронизация

Здесь описаны плагины, которые должны синхронизироваться с таблицей доверенностей.

Применение полномочий (warrantagents)

  • При прекращении действия доверенности, применение полномочия прекращает действовать (переводится в статус archive)
  • При истечении срока действия применение полномочия переводится в статус archive

Синхронизация

Здесь описаны плагины, которые должны синхронизироваться с таблицей применения полномочий.