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

Материал из DOF
Перейти к: навигация, поиск
(Создана страница с описанием управления полномочиями)
 
(Дописано описание прав с учетом всех изменений)
Строка 5: Строка 5:
  
 
=== Плагины необходимые для системы управления доступом ===
 
=== Плагины необходимые для системы управления доступом ===
 +
 +
[[Разработка:storages/acl | acl ]] - список полномочий. Хранит информацию о том в каком плагине какие полномочия существуют.
 +
[[Разработка:storages/aclwarrants | aclwarrants ]] - Мандаты и доверенности.
 +
[[Разработка:storages/aclwarrantagents | aclwarrantagents ]] - Применение доверенностей. Определяет, каким пользователям какие доверенности выданы.
  
 
=== Общие правила и требования ===
 
=== Общие правила и требования ===
Строка 10: Строка 14:
 
* Каждый плагин, предоставляющий права доступа должен реализовывать интерфейс dof_storage_acl_interface
 
* Каждый плагин, предоставляющий права доступа должен реализовывать интерфейс dof_storage_acl_interface
 
** Список и структура прав доступа описывается в функции acldefault()
 
** Список и структура прав доступа описывается в функции acldefault()
** Формат массива: (дописать)
+
** Формат массива:  
 +
<pre>
 +
array(
 +
    'view' => array('teacher', 'manager'),
 +
    'edit' => array('manager')
 +
);
 +
</pre>
 +
В качестве ключей указывается то право, которое назначается, а значением служит массив ролей, которые получают это право. Список стандартных ролей можно посмотреть в плагине [[Разработка:storages/aclwarrants | aclwarrants ]]
 
* Все плагины, отвечающие за работу с полномочиями имеют префикс acl.
 
* Все плагины, отвечающие за работу с полномочиями имеют префикс acl.
 
* Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
 
* Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
 
* В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
 
* В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.
  
==== Стандартные права доступа для хранилищ и рабочих процессов ====
 
  
 +
 +
=== Как происходит процесс установки прав ===
 +
При установке, обновлении или удалении любого плагина, если он предоставляет права доступа - то в функциях upgrade(), delete(), и install() нужно вызывать функцию save_roles() плагина [[Разработка:storages/acl | acl ]].
 +
== Правила работы с правами доступа ==
 +
 +
=== Полномочия (acl) ===
 +
* Полномочия не имеют статусов, поэтому при удалении плагина все полномочия, принадлежащие ему также физически удаляются из таблицы
 +
 +
==== Стандартные полномочия для хранилищ и рабочих процессов ====
 
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
 
В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:
  
Строка 31: Строка 50:
 
* changestatus:all - вообще изменять статус
 
* changestatus:all - вообще изменять статус
  
(дописать про возможность указать отношение)
+
Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права.
 
+
Отношение указывается через прямой слеш "/".
=== Как происходит процесс установки прав ===
+
Примеры
При установке, обновлении или удалении любого плагина проверяется, предоставляет ли он собственные права, и если да - то запускаются соответствующие функции.
+
* 'edit/owner' - право редактировать объект для владельца.
(создать ссылку на acl, описать там перехват событий установки плагина и весь процесс)
+
* 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта
 
 
== Правила работы с правами доступа ==
 
 
 
=== Полномочия ===
 
  
=== Мандаты и доверенности ===
+
=== Мандаты и доверенности (warrants) ===
 +
* Действия при удалении мандата или доверенности
 +
** Основным способом удаления мандата следует считать перевод записи в статус "archive"
 +
** Все дочерние доверенности и мандаты также перестают действовать
 +
** Прекращают действия все применения полномочий ([[Разработка:storage/warrantagents | warrantagents ]]) которые были назначены указанным мандатом.
 +
* При установке прав новым плагином все новые права добавляются к стандартным доверенностям
 +
* Плагины не могут добавлять свои доверенности при установке
 +
* Стандартные доверенности не могут быть назначены пользователям
 +
* Если запрещается наследование для доверенности, которую раньше можно было наследовать - то старые дочерние доверенности продолжают свое действие, но новые создать нельзя
  
 
==== Синхронизация ====
 
==== Синхронизация ====
 
Здесь описаны плагины, которые должны синхронизироваться с таблицей доверенностей.  
 
Здесь описаны плагины, которые должны синхронизироваться с таблицей доверенностей.  
===== storage/positions =====
+
* [[Разработка:storage/positions | storage/positions]]
Каждая должность (position) может сопоставляться с доверенностью (warrant). Должности синхронизируются с доверенностями вручную, при помощи специальной формы в плагине im/positions.
 
  
=== Применение полномочий ===
+
=== Применение полномочий (warrantagents) ===
 +
* При прекращении действия доверенности, применение полномочия прекращает действовать (переводится в статус archive)
 +
* При истечении срока действия применение полномочия переводится в статус archive
  
 
==== Синхронизация ====
 
==== Синхронизация ====
 
Здесь описаны плагины, которые должны синхронизироваться с таблицей применения полномочий.  
 
Здесь описаны плагины, которые должны синхронизироваться с таблицей применения полномочий.  
===== storage/appointments =====
+
* [[Разработка: storage/appointments | storage/appointments ]]
Каждое назначение на должность (appointment) должно сопоставляться с одним или несколькими применениями полномочий (aclwarrantagents)
 
 
 
  
 
[[Категория:Разработка]]
 
[[Категория:Разработка]]
 
[[Категория:Управление доступом]]
 
[[Категория:Управление доступом]]

Версия 14:11, 15 апреля 2011

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

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

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

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

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

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

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

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

  • Все плагины, отвечающие за работу с полномочиями имеют префикс acl.
  • Все функции в сторонних плагинах, которые управляют правами доступа должны иметь префикс acl
  • В плагинах типа im и modlib следует для проверки стандартных прав доступа обращаться к плагинам storage.


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

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

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

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

  • Полномочия не имеют статусов, поэтому при удалении плагина все полномочия, принадлежащие ему также физически удаляются из таблицы

Стандартные полномочия для хранилищ и рабочих процессов

В каждом плагине storage для определения уровня доступа к объекту следует использовать стандартные обозначения:

  • view - право просматривать объект из таблицы
  • edit - право редактировать объект из таблицы
  • create - право создавать новый объект в таблице
  • delete - право удалять объект из таблицы
  • viewbase - право просматривать сокращенную информацию по объекту (например при просмотре списка записей)
  • viewextended - право просматривать расширенную информацию по объекту (все поля)
  • edit:имя_поля - право редактировать отдельное поле
  • view:имя_поля - право просматривать отдельное поле
  • changestatus:from:статус - изменять статус с указанного
  • changestatus:to:статус - изменять статус на указанный
  • changestatus:all - вообще изменять статус

Также при создании права можно указать отношение, которое указанный пользователь имеет к объекту, на который назначены права. Отношение указывается через прямой слеш "/". Примеры

  • 'edit/owner' - право редактировать объект для владельца.
  • 'changestatus:all/owner' - право на любое изменение статуса для владельца объекта

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

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

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

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

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

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

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

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