Права доступа
Obsah
Описание реализации управления правами FreenetIS
Текущие права доступа для FreenetIS основаны на PHP GACL. Knihodna сама была удалена, но системные таблицы поддерживаются.
Описание SQL таблиц библиотеки Phpgacl
В PhpGacl все построено на объектах ACO, ARO и АХО.
'ACO' - операции объектов
'ARO' - объекты (или группы объектов), которые выполняют индивидуальные операции (АСО)
АХО - объекты (или группы объектов), над которыми индивидуальные ARO выполняют операции (ACO)
acl
Таблица определения индивидуальных правил доступа.
Она содержит столбцы id, section_value, allow, enabled, return_value, note, updated_date.
ID - идентификатор, важен для соединения с ACO, ARO и ОВБ
section_value - имя секции, где правила
allow - 1 => Правило разрешает операции, 0 => Правило запрещает операции
Enabled - 1 => правило включено, 0 => правило отключено
return_value - Я еще не знаю
Note - комментарии к правилу (например Администраторы могут делать все)
Updated_date - дата последнего обновления правил
acl_sections
Таблица определения отдельных разделов Правил.
По умолчанию в PhpGacl две секции - System и User. FreenetIS использует только User.
Он содержит столбцы id, value, order_value, name and hidden
id - идентификатор, более или менее бесполезный, потому что правила относятся к разделам со значениями (значение)
значение - короткое имя без пробелов, используется для назначения отдельных списков управления доступом на разделы
order_value - Я еще не знаю
Название - длинные названия, описания
скрытые - 0 => Раздел виден, 1 => скрыт
acl_seq
Таблица единственной целью котороq является в настоящее время хранение последнего ID таблицы ACL.
PhpGacl (Бог знает почему) не использует автоприращение в таблицах.
Содержит столбец ID.
'ID' - последняя ID в таблице ACL
асо
Таблица определения отдельных объектов ACO. В FreenetIS имеется ACO либо для оказания меню (разделы меню), либо ACO для общих операций (раздел freenetis) - view_all, view_own, edit_all, edit_own, delete_all, delete_own, new_all, new_own, confirm_all, confirm_own ... использованы в 'только' с объектами АХО.
Она содержит столбцы id, section_value, value, order_value, name and hidden.
id - несущественный идентификатор (для подключения к таблице ACL используется aco_map значение)
section_value - название раздела определенного в aco_sections
value - короткое имя без пробелов, используемое для назначения ACO на разделы и подключения к каждому правилу ACL в aco_map
order_value - Я еще не знаю
name - длинные названия, описания
hidden - 0 => Раздел виден, 1 => скрыт
aco_map
Соединяет ACO объекты с различными правилами ACL. ACO это один (из трех ACO, ARO и АХО) не в состоянии кластеризироваться в группах, потому что нет никакой другой таблицы aco_groups_map.
Содержит столбцы acl_id, section_value a value.
'Acl_id' -
'Section_value' -
value -
aco_sections
Раздел для каждого ACO , FreenetIS использует только два : Меню - для объектов ACO на участке меню, а затем freenetis - определение общих операции ACO ( просмотр, редактирование , удаление и подтверждение) .
Он содержит столбцы id , value , order_value , name and hidden .
id - идентификатор раздела ( не используется)
value -имя раздела (в нашем меню и freenetis )
Order_value - Я еще не знаю
name - описание раздела
hidden - 0 = > Раздел виден , 1 => скрыт
aro_groups_map
присваивает отдельным группам пользователей ACL правила.
Пример:
Создать правило " кандидаты в члены и постоянные члены могут сделать XYZ" .
Это правило будет в " ACL " представлено новой строкой с ID = 27 , в котором хранится значение "Разрешить" ;
Если у " полноправных членов " ID = 22 и тех, кто заинтересован в членстве ID = 23 , то в таблице aro_groups_map при создании этого правила будет две новые записи :
acl_id | group_id
27 | 22
27 | 23
axo_groups_map
Подобно aro_groups_map , но АХО