Управление правами
Используется довольно интересная система управления правами.
Имеется функция HasAccess($privilege, $tag), которая обращается к ThisUserHasAccess($privilege, $tag), она в свою очередь к UserHasAccess($user, $privilege, $tag), которая спрашивает GroupHasAccess($group, $privilege, $tag).
Наконец, GroupHasAccess($group, $privilege, $tag) проверяет, имеет ли группа $group право на $privilege по адресу $tag.
При этом для адреса действует правило, позволяющее чётко отделять дерево страниц от страницы – если в конце есть /, то считаем это деревом, если нет – страницей.
Тег * определяет любую страницу и любое дерево страниц.
Помимо стандартных $privilege можно определять любые свои, причём наличие префикса _all указывает на то, что эта привилегия не зависит от страницы и при проверке прав будет считаться, что задан тег *. Например, право на добавление новых пользователей или на добавление новостей лучше записать через _all. Это правило добавлено для оптимизации.
Добавление правил производится с помощью AddGroupRule($group, $privilege, $tag, $allow):
- $group – группа
- $privilege – привилегия
- $tag – адрес (к адресу применяется NpjTranslit с сохранением последнего /)
- $allow – разрешить или запретить (для разрешения выставляется 1, для запрета 0)
Основные привилегии
- read – читать
- write – записывать
- comment – комментировать
- rename – переименовывать
- upload – загружать файлы
Вам оказалась полезна эта статья? Если не трудно – дайте свою оценку тому, насколько предложенный здесь материал вам помог=)
Комментарии:
Нет комментариев, будьте первым!
Добавить комментарий: