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