Разработка:Управление доступом — различия между версиями
Ilya (обсуждение | вклад) м (→Как происходит процесс установки прав) |
Ilya (обсуждение | вклад) м (→Мандаты и доверенности (warrants)) |
||
Строка 61: | Строка 61: | ||
** Основным способом удаления мандата следует считать перевод записи в статус "archive" | ** Основным способом удаления мандата следует считать перевод записи в статус "archive" | ||
** Все дочерние доверенности и мандаты также перестают действовать | ** Все дочерние доверенности и мандаты также перестают действовать | ||
− | ** Прекращают действия все применения полномочий ([[Разработка:storages/ | + | ** Прекращают действия все применения полномочий ([[Разработка:storages/aclwarrantagents | aclwarrantagents ]]) которые были назначены указанным мандатом. |
* При установке прав новым плагином все новые права добавляются к стандартным доверенностям | * При установке прав новым плагином все новые права добавляются к стандартным доверенностям | ||
* Плагины не могут добавлять свои доверенности при установке | * Плагины не могут добавлять свои доверенности при установке |
Версия 14:13, 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"
- Все дочерние доверенности и мандаты также перестают действовать
- Прекращают действия все применения полномочий ( aclwarrantagents ) которые были назначены указанным мандатом.
- При установке прав новым плагином все новые права добавляются к стандартным доверенностям
- Плагины не могут добавлять свои доверенности при установке
- Стандартные доверенности не могут быть назначены пользователям
- Если запрещается наследование для доверенности, которую раньше можно было наследовать - то старые дочерние доверенности продолжают свое действие, но новые создать нельзя
Синхронизация
Здесь описаны плагины, которые должны синхронизироваться с таблицей доверенностей.
Применение полномочий (warrantagents)
- При прекращении действия доверенности, применение полномочия прекращает действовать (переводится в статус archive)
- При истечении срока действия применение полномочия переводится в статус archive
Синхронизация
Здесь описаны плагины, которые должны синхронизироваться с таблицей применения полномочий.