Одна из самых важных функций в 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+. Это пользователь, группа, базовые права доступа и уровни доступа. Я отобразила их на диаграмме для того, чтобы наглядно показать отношения между этими аспектами в деталях:
Пользователь
Это понять легче всего – это вы, или кто-то, кто посещает сайт. Пользователю не нужно иметь аккаунт на сайте для того, чтобы являться таковым. Он всё равно будет считаться публичным пользователем. Отдельные пользователи могут быть назначены в одну или несколько групп. Нельзя назначить базовые права доступа пользователю напрямую. Они назначаются группе.
Базовые права доступа
Базовые права доступа назначаются группам, а не отдельным пользователям. Если нужно назначить такую функцию для одного пользователя, придется создать для него отдельную группу.
Базовые права доступа включают:
- Вход на сайт: возможность войти во фронтэнд сайта;
- Вход в панель управления: возможность войти в панель администрирования сайта;
- Вход в режиме техобслуживания: когда сайт находится в режиме оффлайн (Общие настройки – вкладка Сайт), эта функция контролирует, кто может войти на сайт;
- Суперадминистратор: привилегии администратора, такие как изменения Общих настроек. Его привелегии также переопределяют любые другие настройки ACL, что дает этому пользователю доступ ко всем системам Joomla;
- Управление компонентом: это возможность получить доступ к определенным зонам панели администрирования (меню, менеджеру статей, медиа-менеджеру, компонентам, и т.д.);
- Создавать: возможность создать новый контент;
- Удалять: возможность удалить контент (поместить в корзину);
- Изменять: возможность редактировать существующий контент (не обязательно только свой);
- Изменять состояние: возможность переключать состояние между опубликованным, неопубликованным, удаленным и помещенным в архив;
- Изменять свое: возможность редактировать свой собственный контент (но не чужой).
Базовые права доступа настраиваются в Сайт - Общие настройки, вкладка Права.
Понимание базовых прав доступа в общих настройках
В группах Manager, показанных выше и во всех группах за исключением Public, выпадающие списки имеют три пункта: Разрешено, Запрещено и Унаследовано. Группа Public является родительской для всех подгрупп. Выпадающее меню у Public имеет три значения: Разрешено, Запрещено и Не определено.
- Разрешено означает, что какая-то возможность доступна или разрешена для определенной группы пользователей.
- Запрещено означает, что какая-то возможность не доступна и не разрешена для определенной группы пользователей.
- Унаследовано означает, что какая-то возможность наследуется у родительской группы. Эта опция не доступна для группы Public.
- Не определено означает, что права доступа не были заданы. Эта функция доступна для группы Public только в общих настройках сайта.
Полное руководство по правам доступа для каждой группы пользователей можно найти ниже.
При задании прав доступа на уровне общих настроек, они действуют на всем сайте и его зонах. Например, у автора есть возможность Создавать, установленная в общих настройках. Он может создать статью в любой категории на сайте. Эта возможность также означает, что можно создать веб-ссылку из фронтэнда сайта, если используется соответствующий компонент. Нужно тщательно обдумать, какие права доступа вы хотите назначить. Можно не устанавливать возможность создания в общих настройках, если нужно группе пользователей дать возможность создавать материалы и категории. Можно настроить эту возможность в настройках Менеджера статей. Более подробнее этот момент будет рассмотрен в следующих статьях.
Всё о «Запрещено»
Возможно вы захотите установить для всех выпадающих списков опцию "Разрешено" или "Запрещено" для удобства использования. Однако я не рекомендую делать этого.
Если включена опция "Запрещено", то даже при включённой опции "Разрешено" для пользователей более высокого уровня, будет наследоваться опция "Запрещено" у более низкого уровня и переопределит опцию "Разрешено".
Например, если установить для выпадающих списков группы Public опцию "Запрещено", нет смысла иметь группы более высокого уровня. Никому, кроме Суперпользователей нельзя будет производить действия на сайте.
Группа пользователей
Группа пользователей (или просто "группы") – это пользователи, имеющие одинаковые права доступа. Пример групп Joomla 1.5: группа управляющих имеет возможность входа во фронтэнд сайта, создавать статьи, редактировать статьи, публиковать и отменять публикации статей. Все участники этой группы имеют равные права.
В отличие от Joomla 1.5, пользователя можно назначить в несколько групп: как в группу управляющих, так и в группу администраторов.
Можно создать собственные группы и назначить им особые базовые права доступа. Базовые права доступа наследуются группами. Есть две причины создания группы. Первая – возможность просмотра контента во фронтэнде сайта (группам пользователей назначаются уровни доступа). Вторая – назначение возможности создания, редактирования, удаления, публикации, отмены публикации для конкретной группы.
При просмотре сайта, пользователь считается гостем (группа Public).
Группу Public нельзя удалить, но остальные удалить можно. Однако я советую сохранить их, потому что они помогут наглядно показать, как работает система наследования прав доступа.
Стандартные группы пользователей Joomla
По умолчанию в Joomla 1.6 и более поздних версиях есть такой же стандартный набор групп, как в Joomla 1.5. Список групп и их базовых прав доступа:
- Public: может видеть контент во фронтэнде сайта, для просмотра которого не требуется вход на сайт. Для группы Public, по умолчанию, все показатели выставлены как "Не определено". Этим пользователям не разрешено заходить во фронтэнд сайта. Для того чтобы у гостей была такая возможность, нужно выставить соответствующие права доступа.
- Registered: может входить во фронтэнд сайта и является дочерней группой Public. У зарегистрированных пользователей есть возможность входа на сайт.
- Author: может создавать собственный контент с помощью опции "Создавать" и "Изменять свое". Авторы являются дочерней группой Registered и наследуют у неё возможность входа на сайт.
- Editor: может редактировать контент с помощью функции "Изменять". Редакторы являются дочерней группой Author и наследуют у неё возможность "Создавать" и "Изменять свое", а также возможность входа на сайт у зарегистрированных пользователей.
- Publisher: может публиковать, отменять публикацию, помещать контент в архив или в корзину с помощью функции «Изменять состояние». Это пользователи являются дочерней группой Editor. Они наследуют у авторов возможность «Изменять», «Создавать», «Изменять свое», а также возможность входа на сайт у зарегистрированных пользователей.
- Manager: дочерняя группа группы Public и никакие доступы Registered, Author, Editor и Publisher ей не доступны. Они все должны быть назначены индивидуально: вход на сайт, вход в панель управления, вход в режиме техобслуживания, создавать, удалять, изменять, изменять состояние и изменять свое.
- Administrator: может редактировать и настраивать расширения с помощью функции "Управление компонентом". Администраторы являются дочерней группой Менеджеров и наследуют возможности: вход на сайт, вход в панель управления, вход в режиме техобслуживания, создавать, удалять, изменять, изменять состояние и изменять свое.
- Super Users: может изменять общие настройки, а также использовать другие возможности Суперадминистратора. Суперпользователи являются дочерней группой Public, но имеют всего одну возможность – возможность Суперадминистратора. Она переопределяет все другие, так что у него есть полный набор возможностей.
Стандартные группы и их возможности представлены в общих настройках (Сайт - Общие настройки - Права).
Уровни доступа
Уровни доступа позволяют настроить видимость контента для определенных пользователей. Они соответствуют правам доступа к фронтэнду сайта.
Исторически существует три уровня доступа: public (видят все), registered (нужно войти на сайт, чтобы увидеть контент), или special (нужно войти на сайт в качестве автора или с более высоким уровнем доступа, чтобы увидеть контент). Эти уровни доступа присутствуют в версии 1.6+ по умолчанию, но можно также создать и собственные уровни.
Уровни доступа не наследуют права доступа. Если статья видна только для Publisher с использованеим своего уровня доступа, то даже Super Users не сможет ее увидеть. Нужно назначить для Super Users и Publisher одинаковый уровень доступа для просмотра контента (в любом случае, Супер пользователь может редактировать статью в панели администрирования сайта).
Что же дальше?
В дальнейших статьях про ACL мы рассмотрим применение вышеизложенных принципов на практике.
- Урок 1: Как разные пользователи видят различный контент на сайте
- Урок 2: Улучшение юзабилити и разное оформление страницы авторизации
- Урок 3: Как сделать управление более удобным для клиентов, используя ACL в панели администратора
Если же вас интересует реализация ACL в компоненте, то обратитесь к документации "Создание компонента для Joomla 2.5":
Редакция статьи: Dmitry Rekun (b2z)