Система контроля прав доступа
Учетная запись пользователя
Каждый зарегистрированный пользователь системы имеет личную учетную запись. К учетной записи относятся логин и пароль пользователя, а также дополнительная информация, такая как Ф.И.О, e-mail, телефон и т.п. Базовый набор полей учетной записи пользователя может быть расширен.
В системе выделены две специальных учетных записи: root (администратор системы) и anonymous (неавторизированный пользователь). Администратор системы имеет абсолютные права на работу с объектами, а также полный доступ к модулям системной настройки (таким как «Управление структурой данных», «Управление пользователями» и др.). Учетную запись администратора невозможно удалить, она всегда должна присутствовать в системе. В случае, когда пользователь не прошел авторизацию, используется учетная запись анонимного пользователя.
Группы пользователей
Пользователи объединяются в группы по некоторому признаку. Группа создается для наделения входящих в нее пользователей общими привилегиями. Один пользователь может входить в несколько групп.
Права доступа
В определенных ситуациях требуется разграничить доступ пользователей к той или иной информации, например, запретить группе пользователей просматривать или редактировать некоторые объекты. Для этих целей в Cairo используется система контроля прав доступа. Работа с объектами производится с учетом прав доступа к ним как при работе через веб-интерфейс администратора Cairo, так и при вводе/выводе информации об объектах на страницах сайта. Благодаря этому, регулируя права на доступ к объекту, можно полностью скрыть объект с сайта, либо сделать его доступным только для некоторых пользователей. Анонимные пользователи не имеют доступа к интерфейсу администратора Cairo, однако могут работать с объектами через сайты, созданные на базе Cairo. Например, в форуме может понадобиться возможность создания сообщений неавторизированными пользователями, это относится и к отзывам, которые анонимные пользователи могут добавлять к товарам в каталоге.
В качестве прототипа системы прав был выбран подход, использующийся в операционных системах семейства UNIX. Объект относится к одному пользователю, который называется владельцем, и одной группе, которая называется группой объекта. Для каждого объекта устанавливается три набора прав: права для владельца объекта; права для пользователей, принадлежащих к группе объекта; права для остальных пользователей. В каждом наборе определены права для трех типов операций над объектом: чтение (r), запись (w), изменение списка вложений (x). Таким образом, права доступа к отдельному объекту определяются тремя триплетами вида [rwx rwx rwx], где первый триплет устанавливает права владельца объекта, второй — права для пользователей, принадлежащих группе этого объекта и третий — права всех остальных пользователей. Следует отметить, что права «х» — на управление вложениями объекта достаточно лишь для добавления вложения. Чтобы удалить вложение необходимо иметь не только право на управление вложениями для родительского объекта, но и право на редактирование удаляемого вложения.
Пример настроек прав доступа для объектов раздела «Лента новостей»
Пример настроек прав доступа для объектов раздела «Гостевая книга»
Пример настроек прав доступа для объектов раздела «Заказы интернет-магазина»
Вновь созданные объекты принадлежат группе родительского объекта. Это позволяет организовать самоподдерживающуюся информационную систему, которая автоматически ограничивает развивающуюся подветвь данных той группой, к которой принадлежит родитель этой ветви. Права, используемые для вновь создаваемых объектов, задаются для типа объекта. По умолчанию, при создании типа, система предлагает значение [rwx r-- r--]. Такой набор прав означает, что владелец имеет права на все операции над объектом, а пользователи, относящиеся к группе объекта, как и все остальные пользователи, имеют лишь право на чтение объекта. Права на объект, а также владельца и группу объекта может изменять только текущий владелец объекта и пользователь root.