Одна из самых важных функций в Joomla 1.6 и более поздних версиях – это Access Control List (ACL). Это список контроля доступа, в котором отображаются и настраиваются права доступа на веб-сайте, включая пункты: просматривать, создавать, редактировать, удалять, вход в систему.

Многие считают, что ACL относится к фронтэнду сайта. Например, какие статьи для меня доступны, когда я авторизируюсь на сайте? А если кто-то еще заходит на сайт, будет ли у него тот же список доступных статей? Однако ACL также связан с правом создания, редактирования и удаления контента; с тем, кто может публиковать и отменять публикацию контента; с тем, кто может заходить во фронтэнд и панель администрирования сайта, а также, с тем, кто может изменять какие-либо компоненты, модули и шаблоны.

Не все так просто с ACL. Нужно время для того, чтобы понять принципы его работы. Для многих сайтов, возможно, не понадобится больше, чем стандартный набор настроек Joomla. Однако, если вы делаете объемный сайт, ACL может пригодиться. Примеры использования ACL:

ACL можно также использовать для создания упрощенного интерфейса администратора, исключая зоны, где можно вносить изменения на сайте. В Joomla 1.5 можно сделать клиента менеджером, но тогда он сможет редактировать любой компонент, контент и меню на сайте. В Joomla 1.6 и более поздних версиях, можно ограничить клиента с помощью ACL и у клиента будет доступ только к некоторым категориям статей (или отдельно взятых статей), отдельным компонентам (или вообще никаким), и т.д. Используя ACL, можно улучшить удобство использования панели администратора для клиента.

ACL в Joomla 1.5

В Joomla 1.5 ограниченная и фиксированная система ACL. Если вам приходилось работать с Joomla 1.5, то вы видели, как можно назначить параметры видимости пункта меню или статьи для гостей, зарегистрированных или специальных пользователей (авторов и т.д.). Также известно, что зарегистрированные пользователи не могут войти в панель администратора сайта Joomla, но супер администратор имеет такую возможность. У ACL в Joomla 1.5 есть иерархия. Это означает, что каждая группа пользователей наследует права доступа групп, находящихся на ступени ниже. Полный обзор групп в Joomla 1.5 можно найти здесь: brian.teeman.net. В группы входят гости, зарегистрированные пользователи, автор, редактор, управляющий, менеджер, администратор и суперадминистратор.

Уровни доступа Joomla 1.5 включают гостей, зарегистрированных и специальных пользователей. "Гость" означает, что все могут видеть контент. "Зарегистрированные" означает, что только зарегистрированные пользователи могут получить доступ к контенту. "Специальный" относится к авторским группам и выше. Нельзя добавить дополнительные уровни доступа, а также разделять уже существующие.

ACL в Joomla 1.6 и более поздних версиях: обзор

В Joomla 1.6+ ACL не обязательно иерархичен. Можно назначать группам любые права доступа. Права наследуются в случае родительских групп, но не наследуются в случае уровней доступа. Как минимум все группы пользователей являются дочерними группы Public. Есть четыре аспекта системы ACL в Joomla 1.6+. Это пользователь, группа, базовые права доступа и уровни доступа. Я отобразила их на диаграмме для того, чтобы наглядно показать отношения между этими аспектами в деталях:

diagramma kak rabotaet acl v joomla

Пользователь

Это понять легче всего – это вы, или кто-то, кто посещает сайт. Пользователю не нужно иметь аккаунт на сайте для того, чтобы являться таковым. Он всё равно будет считаться публичным пользователем. Отдельные пользователи могут быть назначены в одну или несколько групп. Нельзя назначить базовые права доступа пользователю напрямую. Они назначаются группе.

Базовые права доступа

Базовые права доступа назначаются группам, а не отдельным пользователям. Если нужно назначить такую функцию для одного пользователя, придется создать для него отдельную группу.

Базовые права доступа включают:

Базовые права доступа настраиваются в Сайт - Общие настройки, вкладка Права.

Понимание базовых прав доступа в общих настройках

prava dostupa v globalnoj konfiguratsii joomla
В группах Manager, показанных выше и во всех группах за исключением Public, выпадающие списки имеют три пункта: Разрешено, Запрещено и Унаследовано. Группа Public является родительской для всех подгрупп. Выпадающее меню у Public имеет три значения: Разрешено, Запрещено и Не определено.

Полное руководство по правам доступа для каждой группы пользователей можно найти ниже.

При задании прав доступа на уровне общих настроек, они действуют на всем сайте и его зонах. Например, у автора есть возможность Создавать, установленная в общих настройках. Он может создать статью в любой категории на сайте. Эта возможность также означает, что можно создать веб-ссылку из фронтэнда сайта, если используется соответствующий компонент. Нужно тщательно обдумать, какие права доступа вы хотите назначить. Можно не устанавливать возможность создания в общих настройках, если нужно группе пользователей дать возможность создавать материалы и категории. Можно настроить эту возможность в настройках Менеджера статей. Более подробнее этот момент будет рассмотрен в следующих статьях.

Всё о «Запрещено»

Возможно вы захотите установить для всех выпадающих списков опцию "Разрешено" или "Запрещено" для удобства использования. Однако я не рекомендую делать этого.

Если включена опция "Запрещено", то даже при включённой опции "Разрешено" для пользователей более высокого уровня, будет наследоваться опция "Запрещено" у более низкого уровня и переопределит опцию "Разрешено".

Например, если установить для выпадающих списков группы Public опцию "Запрещено", нет смысла иметь группы более высокого уровня. Никому, кроме Суперпользователей нельзя будет производить действия на сайте.

Группа пользователей

Группа пользователей (или просто "группы") – это пользователи, имеющие одинаковые права доступа. Пример групп Joomla 1.5: группа управляющих имеет возможность входа во фронтэнд сайта, создавать статьи, редактировать статьи, публиковать и отменять публикации статей. Все участники этой группы имеют равные права.

В отличие от Joomla 1.5, пользователя можно назначить в несколько групп: как в группу управляющих, так и в группу администраторов.
Можно создать собственные группы и назначить им особые базовые права доступа. Базовые права доступа наследуются группами. Есть две причины создания группы. Первая – возможность просмотра контента во фронтэнде сайта (группам пользователей назначаются уровни доступа). Вторая – назначение возможности создания, редактирования, удаления, публикации, отмены публикации для конкретной группы.

При просмотре сайта, пользователь считается гостем (группа Public).

Группу Public нельзя удалить, но остальные удалить можно. Однако я советую сохранить их, потому что они помогут наглядно показать, как работает система наследования прав доступа.

Стандартные группы пользователей Joomla

По умолчанию в Joomla 1.6 и более поздних версиях есть такой же стандартный набор групп, как в Joomla 1.5. Список групп и их базовых прав доступа:

Стандартные группы и их возможности представлены в общих настройках (Сайт - Общие настройки - Права).

Уровни доступа

Уровни доступа позволяют настроить видимость контента для определенных пользователей. Они соответствуют правам доступа к фронтэнду сайта.

Исторически существует три уровня доступа: public (видят все), registered (нужно войти на сайт, чтобы увидеть контент), или special (нужно войти на сайт в качестве автора или с более высоким уровнем доступа, чтобы увидеть контент). Эти уровни доступа присутствуют в версии 1.6+ по умолчанию, но можно также создать и собственные уровни.

Уровни доступа не наследуют права доступа. Если статья видна только для Publisher с использованеим своего уровня доступа, то даже Super Users не сможет ее увидеть. Нужно назначить для Super Users и Publisher одинаковый уровень доступа для просмотра контента (в любом случае, Супер пользователь может редактировать статью в панели администрирования сайта).

Что же дальше?

В дальнейших статьях про ACL мы рассмотрим применение вышеизложенных принципов на практике.

Если же вас интересует реализация ACL в компоненте, то обратитесь к документации "Создание компонента для Joomla 2.5":