Вступление
В предыдущих уроках по ACL мы рассмотрели:
В этой статье я расскажу, как сделать управление более удобным для клиентов, используя ACL в панели администратора Joomla. Для большинства своих сайтов я создаю возможность редактирования во фронтэнде Joomla. К сожалению, возможности редактирования там ограничены. Невозможно просто создать новые статьи или прикрепить их к фронтэнду сайта, не настроив функциональность блога (а иногда это не то, что хотелось бы использовать). По этой причине мне приходится предоставлять клиентам доступ к панели администратора для выполнения простых задач.
Когда клиенты получают доступ к панели управления Joomla, они путаются в том, что совсем не должны трогать. Если предоставить клиенту уровень доступа менеджера, им все равно будут доступны не нужные им настройки. Исключая ненужные опции из панели управления, можно облегчить процесс работы для клиента. Им будет понятен каждый пункт меню и они буду знать, для чего нужен этот пункт... Если обучить их и сделать для них подробную документацию.
Запрещено все, что не разрешено против разрешено все, что не запрещено
ACL в Joomla работает по системе "запрещено все, что не разрешено". У группы Public нет возможности делать что-то, кроме как просматривать фронтэнд сайта. Всем стандартным группам пользователей можно добавлять права, которые позволяют делать что-то.
Запомните - нельзя переопределить опцию "Запрещено".
Если запретить группе пользователей возможность редактирования контента без категории, то нельзя переопределить ее для одной статьи в категории. Однако, если группа пользователей наследует настройку "Не определено" у группы Public (что означает, что им не разрешено совершать какие-либо действия, но эту возможность можно переопределить), они пока не могут редактировать статьи в рамках категории. Можно предоставить им возможность редактирования для одной статьи и переопределить настройки категории.
Можно добавлять права доступа группе пользователей для выполнения конкретных действий на нескольких уровнях. Рассмотрим возможность редактирования статей. Есть несколько способов добавить эту возможность.
- Редактирование на уровне общих настроек: большинство стандартных групп пользователей Joomla уже имеют возможность редактирования. Она назначена в общих настройках. Однако, если она назначена на этом уровне, то у группы пользователей есть возможность редактировать любой контент: статьи, веб-ссылки, контактные формы и т.д. Для того чтобы они не могли этого делать, нужно использовать опцию "Запрещено". Возможно, таким образом, вы запретите возможность редактирования во многих частях структуры Joomla. Я не рекомендую настраивать возможность редактирования в общих настройках.
- Редактирование на уровне настроек статьи: добавление возможности редактирования на этом уровне позволит клиенту редактировать статьи и категории во всем контенте. Нужно будет запретить редактирование для отдельных категорий и статей, если потребуется. Запомните, что нельзя переопределить опцию "Запрещено". Я также не рекомендую настраивать редактирование на этом уровне, если только клиенту не нужно редактировать все, что находится в рамках менеджеров статей и категорий.
- Редактирование на уровне отдельной категории: клиент сможет редактировать статьи в определенной категории. Это наиболее удобный и логичный метод для администратора. Можно запретить редактирование отдельных статей и не волноваться о том, что случится, если вам позже понадобиться переопределить что-то глубже в структуре Joomla.
- Редактирование на уровне отдельных статей: можно установить права доступа к отдельным статьям, но это потребует много времени. Я не рекомендую изменять уровень доступа статей, если только нет другого выхода. Запомните: если опция "Запрещено" настраивается на уровне доступа категории, то она не может быть переопределена на уровне статьи.
Лучше использовать систему "запрещено все, что не разрешено", когда настраиваете ACL в Joomla. Это даст больше возможностей в будущем для того, чтобы настраивать права доступа на уровне статей. Если использовать "разрешено все, что не запрещено", у вас уже не будет такой гибкой системы предоставления прав.
Проблема, которую мы пытаемся решить
Предположим, что нам необходимо предоставить клиенту базовый доступ к панели администратора Joomla:
- Возможность создавать, редактировать, публиковать/отменять публикацию в рамках особых категорий (или всех категорий);
- Возможность создавать, редактировать и публиковать/отменять публикацию пунктов меню;
- Возможность иметь доступ к некоторым базовым компонентам, таким как компонент "Ссылки".
Решение проблемы
Вот основной подход к настройке:
- Создаем новую группу пользователей, назначаем базовые права и создаем пользователя для клиента.
- Назначаем нужный уровень (уровни) доступа.
- Назначаем права доступа таким образом, чтобы клиент имел доступ к "Менеджеру материалов", "Менеджеру меню" и компоненту "Ссылки".
Советую проделать этот пример в двух браузерах. При использовании одного браузера, придется выходить из фронтэнда и заходить снова под другим пользователем для того, чтобы увидеть, как у каждого из них отображается сайт, т.к. в Joomla нельзя иметь две параллельные сессии от разных пользователей.
1. Создание новой группы пользователей, назначение базовых прав доступа, создание пользователя
Я рассказывал, как это работает в уроке "Joomla ACL: Уровни доступа". Вкратце, нужно сделать следующее:
- Создайте новую группу пользователей и назовите "Группа клиентов". Сделайте ее дочерней группой Public.
- В правах доступа общих настроек, установите для этой группы доступ "Вход в панель управления" - "Разрешено" (если клиенту также нужно авторизоваться на сайте, то установите "Вход на сайт" - "Разрешено". Настройте другие права доступа соответственно потребностям клиента).
- Создайте пользователя для клиента и назначьте его в Группу клиентов. Запомните его логин и пароль.
2. Назначение уровней доступа
Теперь при входе в панель управления в качестве клиента можно увидеть экран, похожий на этот:
Вы вошли в панель управления, но не видно ни меню, ни панели управления. Вы можете только выйти отсюда.
Есть ещё одна вещь, которую мы не настроили - это уровень доступа к панели управления. Учите, что уровни доступа отвечают за то, какая информация видна конкретному пользователю, включая модули, контент, и т.д. Меню являются модулем даже в панели управления Joomla. Это административный модуль и он имеет специальный уровень доступа. Таким образом, группа пользователя клиента должна будет иметь специальный уровень доступа.
Поскольку для работы в панели администратора нужен уровень доступа Special, я советую не использовать этот уровень доступа во фронтэнде Joomla.
Теперь сделайте следующее:
- Суперпользователем назначьте Группе клиентов уровень доступа Special (смотрите урок "Joomla ACL: Уровни доступа", если требуется помощь в этом действии);
- Выйдите из панели управления и войдите снова (при смене уровня доступа нужно выйти и снова войти, чтобы увидеть изменения в интерфейсе).
Теперь как клиент вы увидите что-то похожее на это:
Вот, что клиент сможет делать в панели администрирования на данном этапе:
- Редактировать свой профиль, в том числе изменять имя пользователя и пароль (не являясь Суперпользователем, клиент не сможет изменять свою группу);
- Просматривать ссылки на пункты помощи, которые и так доступны для всех гостей.
- Выходить из профиля и просматривать фронтэнд сайта.
- Просматривать 5 самых популярных материалов и последние 5 созданных материалов, с помощью модулей справа, но сможет редактировать эти материалы.
Это не так уж много, но все же уже что-то. Следующим шагом будет предоставление клиенту возможности редактирования, создания и изменения состояния материалов.
3a. Назначение уровней доступа: Материалы
Клиенту нужно иметь доступ к Менеджеру материалов в панели администратора Joomla. Первым делом для клиента нужно сделать Менеджер материалов в качестве пункта меню. Как только этот пункт станет виден для клиента, можно будет перейти к более специфическим правам доступа.
Предоставляем доступ к Менеджеру материалов в панели управления клиента
Перейдите к браузеру с клиентским видом, обновите страницу и посмотрите на Менеджер материалов и менеджер категорий, которые будут отображаться как иконки на панели управления, а также в верхнем меню.
К сожалению, нельзя разделить права доступа для Менеджера материалов и Менеджера категорий. Это большой недостаток ACL в Joomla.
Если посмотреть на Менеджер материалов, как клиент, то можно увидеть полный список материалов. Их нельзя редактировать и нельзя изменять их состояние. Нет кнопки для создания нового материала в верхнем правом углу, есть только иконка помощи.
Редактирование всех материалов против редактирования категорий материалов
Следующий шаг – предоставление клиенту права редактирования и изменения состояния материалов. Нужно чтобы клиент изменял все материалов или только у некоторых категорий? Или нужно установить уровень доступа на основе материал-за-материалом?
Все зависит от обстоятельств. При настройке структуры категории на сайте, советую следующее:
- Принимайте в расчет ACL, когда будете настраивать категории контента. Если нужно закрыть клиенту доступ к некоторым страницам сайта, нужно будет объединить все эти страницы под одной категорией, даже если их контент отличается. Так будет легче настраивать ACL;
- Если клиент будет редактировать определенный набор материалов, имеет смысл поместить их в одну категорию;
- Прибегать к изменению прав доступа на основе материал-за-материалом нужно только в особых случаях. Трудно обучить клиента настраивать права доступа к новым материалам. Установите права доступа к категории и клиент никогда не будет изменять их при создании новых материалов.
Вот что нужно делать в каждом из этих случаев.
Клиент редактирует все материалы
Если клиент редактирует все материалы, то настройте права доступа следующим образом:
Откройте "Материалы - Менеджер материалов - Настройки – Права", разрешите Группа клиентов создание, изменение, изменение состояния и изменение своего. Лично я не даю клиентам возможность удалять контент, так как это будет означать удаление из корзины. Они могут публиковать и отменять публикацию материавлов с помощью права доступа "Изменять состояние".
Клиент редактирует материалы в пределах категории (категорий)
Если клиент редактирует материалы в пределах категории или небольшого числа категорий, настройте каждую категорию следующим образом:
- Придется разрешить доступ к управлению копмонентом в "Материалы - Менеджер материалов - Настройки – Права";
- Зайдите в "Материалы - Менеджер категорий", выделите название категории в категории материалов, редактируемых клиентом. Внизу экрана вы увидите настройки прав доступа к каждой из категорий. Разрешите создание, изменение, изменение состояния и изменение своего;
- Повторите то же самое для каждой категории материалов, где нужен доступ клиента.
Клиенту необходим доступ на основе материал-за-материалом
Вы также можете изменить отдельный материал как Суперпользователь. Прокрутите вниз страницы и установите там права доступа для клиента. Такой способ следует использовать в особых случаях. Настройка прав доступа на уровне категорий лучше с точки зрения удобства настройки в будущем.
Я предоставил клиенту возможность редактирования, изменения, изменения состояния любых материалов на сайте. Панель управления клиента теперь выглядит так:
3b. Назначение прав доступа: Медиа-менеджер
Права доступа сейчас назначены таким образом, что клиент может найти материал, выбрать редактирование и затем выбрать кнопку "Изображение" внизу окна редактирования материала. Появится экран медиа-менеджера, который выглядит так:
Учтите, что клиент может просматривать любое изображение, загруженное в медиа-менеджере, но нет интерфейса для загрузки на сайт нового. Это объясняется тем, что медиа-менеджер является отдельным от менеджера материалов компонентом и поэтому имеет свои права доступа. Кроме того, медиа-менеджер не виден в структуре меню панели управления Joomla при входе в качестве клиента.
Чтобы изменить настройки, зайдите в браузер с Суперпользователем, откройте "Материалы - Медиа-менеджер - Настройки – Права" и разрешите доступ к управлению компонентом и созданию.
3c. Назначение прав доступа: Меню
Можете догадаться, что будет дальше. Если клиенту нужно связывать материалы с пунктами меню, ему понадобится доступ к пункту меню "Меню" в панели управления.
Зайдите Суперпользователем в "Меню - Менеджер меню - Настройки – Права" и разрешите Группе клиентов доступ к управлению компонентом, созданию, изменению и изменению состояния.
К сожалению, нельзя разрешить клиенту добавлять дочерние пункты меню толко выбранного пункта меню или разрешить создавать только особые типы пунктов меню. Это было бы хорошим дополнением для ACL в Joomla.
Вот как теперь выглядит панель администратора клиента:
3d. Назначение прав доступа: компонент Ссылки
Теперь нужно предоставить клиенту доступ к компоненту "Ссылки" и только к этому компоненту. Это легко сделать.
Суперпользователем зайдите в "Компоненты - Ссылки - Настройки – Права" и разрешите Группе клиентов доступ к управлению компонентом, созданию, изменению и изменению состояния и изменению своего. Можете повторить эти действия для любого базового компонента Joomla, необходимого для клиента. Некоторые сторонние компоненты могут быть полностью интегрированы в систему ACL Joomla. Если важно использовать ACL на сайте, проверьте, учли ли вы это, выбирая компоненты для своего сайта.
Редакция статьи: Dmitry Rekun (b2z)