Внедрение ролевого ACL в Joomla

что такое joomla

В статье "Преимущество ролевого ACL" были рассмотрены основные принципы и плюсы ролевого ACL, для случаев, когда сайтом управляет несколько человек. Роли интуитивны и назначаются в соответствии с различными обязанностями работников. Хорошо настроенная система ролей может предоставить пользователю только необходимые ему права.

Ролевой метод – это отступление от метода с уровнями, который использовался в версии 1.5 и стандартной конфигурации ACL версии 2.5. Рассмотрим традиционные группы author->editor->publisher. Если бизнес-правила не требуют условия, которое заключается в том, чтобы редактор всегда был автором, а публикатор редактором, то нет нужды в наследовании этих правил. Вместо этого, каждый может быть в группе Public (в качестве родительской), что позволит назначать любую конфигурацию этим трем независимым ролям. Никто не говорил, что публикатор всегда является автором.

Ролевой метод в версии 2.5 выходит за рамки, которые создал уровневый подход.

При назначении ролей мы создаем новые группы и уровни доступа, назначаем несложную иерархию для новых групп и изредка назначаем права доступа. Во фреймворке с уровневым методом эта практика не применима. Нужно выйти за рамки традиционной конфигурации ACL. Вот метод для внедрения ролей в Joomla.
Определите роли, необходимые клиенту

Определитесь с обязанностями, которые нужно разделить между пользователями. Хорошо бы начать с того, чтобы рассмотреть роль для каждого отдельного компонента, так как роли часто привязаны только к одному компоненту. Иногда роль привязывается к нескольким компонентам или некоторым частям сложного компонента. Когда определитесь с ролью, назначьте ее так, чтобы это было понятно для тех, кто будет управлять сайтом и его контентом.
Создайте группу для каждой роли

Используем пользовательскую группу Joomla для того, чтобы назначить роль. Каждая роль представляет свою собственную группу. Если создать 12 ролей, то нужно добавить 12 пользовательских групп. Каждой группе будут предоставлен набор прав доступа, характерных только для нее. Название для группы будет соответствовать названию роли и именно его увидит клиент, когда будет назначать роли пользователям. Придумайте наиболее подходящее название, даже если это потребует несколько слов для описания.
Уберите иерархию групп

Многие роли будут повторять другие и иерархия будет неглубокой. Такая ситуация отличается от той, что мы видели в версиях 1.5 и 2.5 при наследовании групп, где родственные группы встречаются редко и распространена линейная иерархия. Здесь же большинство ролевых групп имеют одну и ту же родительскую группу, так как большинство ролей не связаны с другими ролями и нужно иметь возможность назначить пользователю любой набор ролей, не вызывая конфликта.



Предположим, что ролевые группы будут похожими, но есть две причины для дополнительного уровня наследования: 1) когда много групп имеют одинаковый набор прав доступа или уровень доступа, имеет смысл создать родительскую группу, которая будет представлять эти общие пункты; 2) когда роль включает все права доступа другой роли, а потом расширяется поверх неё, то эта расширяющаяся роль должна наследоваться от ее базовой роли.

Обычно нескольким ролям может потребоваться доступ к панели администратора, поэтому хорошо бы создать родительскую группу, которая дает возможность "Вход в панель управления". Все роли в панели администратора будут иметь такую возможность из-за родительской группы. Требуется внимание к двум пунктам настройки у группы, которая дает доступ к панели администратора. Первый пункт: зайдите в "Общие настройки" и разрешите для этой группы "Вход в панель управления". Второй пункт: если нужно, чтобы для этих пользователей отображалось меню администратора (для некоторых сайтов это может не понадобиться), нужно добавить эту группу в уровень доступа Special. (Почему? Все потому, что меню администратора назначен этот уровень доступа, и вы отвечаете за то, каким вновь созданным группам назначается соответствующий уровень доступа.) Подробности настройки вы можете узнать из статьи "Joomla ACL: настройка панели администратора".

Роли, которым не требуется доступ к панели администратора, могут находиться в группе Public или Registered в качестве родительской. А можно вместо этого создать группу Роли Фронтенда для того, чтобы объединить их под одной группой.
Назначьте права доступа для каждой роли


Обычно роль используется только в одном компоненте. Для каждой ролевой группы зайдите в ее компонент(ы) и назначьте нужные права доступа только для этой ролевой группы. Это не редкость, когда компонент дает права доступа только Суперпользователям, Администраторам и одной ролевой группе. Было бы неплохо забрать права у Администратора (и даже Суперпользователя), оставив только одну ролевую группу.
Создайте ролевые уровни доступа

Важно понимать, как работают уровни доступа в ACL. Грубо говоря, уровень – это не что иное как некоторое собственное объединение пользовательских групп. На практике уровни доступа представляют собой критерии, по которым определяется, является ли пользователь частью уровня доступа (и таким образом, приобретает права). Модулям, пунктам меню, плагинам, категориям и остальному содержимому должен быть назначен уровень доступа. Таким образом в Joomla работает принцип отображения пункта или запуска плагина, который работает в зависимости от настроек пользовательской группы.

Виртуально это назначение является назначением правила, которое инструктирует Joomla отображать ли содержимое или обработать ли плагин, и оно косвенно базируется на назначении групп пользователей.

Возможно, уровень доступа нужно было назвать "правило доступа". Хотя стандартный набор настроек уровня доступа (Public, Registered, Special) представляет собой три яруса уровней, в версии 2.5 нет ничего присущего уровням доступа, что возлагается на уровни. Уровень доступа показывает только набор групп (в любой комбинации без учета уровней).

Мы используем такое положение вещей в своих целях. Если любая часть сайта (категория, модуль администратора, пункт меню) должна быть доступна только тем, кто назначен на определенную роль, то создадим ролевой уровень доступа, включающий только эту группу. Мы настраиваем это как отношение один-к-одному, и таким образом, этот уровень доступа будет предоставлять доступ только тем, кому назначена конкретная роль. Если пользователю не назначена эта роль - у них нет доступа. Учтите, что ролевой уровень доступа нужен не всегда, но если какие-то пункты редактирования должны отображаться только для пользователя с конкретной ролью, понадобится соответствующий уровень доступа.

Правила именования помогают нам создать то, что может стать важным списком. Я использую для каждого ролевого уровня префикс с тильдой (~). Уровни доступа располагаются в алфавитном порядке и это помогает визуально упорядочить их по группам или отделить от стандартного набора (Public, Registered, Special).


Источник: http://joomlablog.ru

Добавить комментарий:
Имя:
E-mail:
2021 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь