пятница, 30 января 2015 г.

Joomla ACL: настройка панели администратора


Joomla ACL: настройка панели администратора (урок 3-й)

Вступление
В предыдущих уроках по ACL мы рассмотрели:
В этой статье я расскажу, как сделать управление более удобным для клиентов, используя ACL в панели администратора Joomla. Для большинства своих сайтов я создаю возможность редактирования во фронтэнде Joomla. К сожалению, возможности редактирования там ограничены. Невозможно просто создать новые статьи или прикрепить их к фронтэнду сайта, не настроив функциональность блога (а иногда это не то, что хотелось бы использовать). По этой причине мне приходится предоставлять клиентам доступ к панели администратора для выполнения простых задач.
Когда клиенты получают доступ к панели управления Joomla, они путаются в том, что совсем не должны трогать. Если предоставить клиенту уровень доступа менеджера, им все равно будут доступны не нужные им настройки. Исключая ненужные опции из панели управления, можно облегчить процесс работы для клиента. Им будет понятен каждый пункт меню и они буду знать, для чего нужен этот пункт... Если обучить их и сделать для них подробную документацию.

Запрещено все, что не разрешено против разрешено все, что не запрещено

ACL в Joomla работает по системе "запрещено все, что не разрешено". У группы Public нет возможности делать что-то, кроме как просматривать фронтэнд сайта. Всем стандартным группам пользователей можно добавлять права, которые позволяют делать что-то.
Запомните - нельзя переопределить опцию "Запрещено".
Если запретить группе пользователей возможность редактирования контента без категории, то нельзя переопределить ее для одной статьи в категории. Однако, если группа пользователей наследует настройку "Не определено" у группы Public (что означает, что им не разрешено совершать какие-либо действия, но эту возможность можно переопределить), они пока не могут редактировать статьи в рамках категории. Можно предоставить им возможность редактирования для одной статьи и переопределить настройки категории.
Можно добавлять права доступа группе пользователей для выполнения конкретных действий на нескольких уровнях. Рассмотрим возможность редактирования статей. Есть несколько способов добавить эту возможность.
  • Редактирование на уровне общих настроек: большинство стандартных групп пользователей Joomla уже имеют возможность редактирования. Она назначена в общих настройках. Однако, если она назначена на этом уровне, то у группы пользователей есть возможность редактировать любой контент: статьи, веб-ссылки, контактные формы и т.д. Для того чтобы они не могли этого делать, нужно использовать опцию "Запрещено". Возможно, таким образом, вы запретите возможность редактирования во многих частях структуры Joomla. Я не рекомендую настраивать возможность редактирования в общих настройках.
  • Редактирование на уровне настроек статьи: добавление возможности редактирования на этом уровне позволит клиенту редактировать статьи и категории во всем контенте. Нужно будет запретить редактирование для отдельных категорий и статей, если потребуется. Запомните, что нельзя переопределить опцию "Запрещено". Я также не рекомендую настраивать редактирование на этом уровне, если только клиенту не нужно редактировать все, что находится в рамках менеджеров статей и категорий.
  • Редактирование на уровне отдельной категории: клиент сможет редактировать статьи в определенной категории. Это наиболее удобный и логичный метод для администратора. Можно запретить редактирование отдельных статей и не волноваться о том, что случится, если вам позже понадобиться переопределить что-то глубже в структуре Joomla.
  • Редактирование на уровне отдельных статей: можно установить права доступа к отдельным статьям, но это потребует много времени. Я не рекомендую изменять уровень доступа статей, если только нет другого выхода. Запомните: если опция "Запрещено" настраивается на уровне доступа категории, то она не может быть переопределена на уровне статьи.
Лучше использовать систему "запрещено все, что не разрешено", когда настраиваете ACL в Joomla. Это даст больше возможностей в будущем для того, чтобы настраивать права доступа на уровне статей. Если использовать "разрешено все, что не запрещено", у вас уже не будет такой гибкой системы предоставления прав.

Проблема, которую мы пытаемся решить

Предположим, что нам необходимо предоставить клиенту базовый доступ к панели администратора Joomla:
  • Возможность создавать, редактировать, публиковать/отменять публикацию в рамках особых категорий (или всех категорий);
  • Возможность создавать, редактировать и публиковать/отменять публикацию пунктов меню;
  • Возможность иметь доступ к некоторым базовым компонентам, таким как компонент "Ссылки".

Решение проблемы

Вот основной подход к настройке:
  1. Создаем новую группу пользователей, назначаем базовые права и создаем пользователя для клиента.
  2. Назначаем нужный уровень (уровни) доступа.
  3. Назначаем права доступа таким образом, чтобы клиент имел доступ к "Менеджеру материалов", "Менеджеру меню" и компоненту "Ссылки".
Советую проделать этот пример в двух браузерах. При использовании одного браузера, придется выходить из фронтэнда и заходить снова под другим пользователем для того, чтобы увидеть, как у каждого из них отображается сайт, т.к. в Joomla нельзя иметь две параллельные сессии от разных пользователей.

1. Создание новой группы пользователей, назначение базовых прав доступа, создание пользователя

Я рассказывал, как это работает в уроке "Joomla ACL: Уровни доступа". Вкратце, нужно сделать следующее:
  • Создайте новую группу пользователей и назовите "Группа клиентов". Сделайте ее дочерней группой Public.
  • В правах доступа общих настроек, установите для этой группы доступ "Вход в панель управления" - "Разрешено" (если клиенту также нужно авторизоваться на сайте, то установите "Вход на сайт" - "Разрешено". Настройте другие права доступа соответственно потребностям клиента).
  • Создайте пользователя для клиента и назначьте его в Группу клиентов. Запомните его логин и пароль.

2. Назначение уровней доступа

Теперь при входе в панель управления в качестве клиента можно увидеть экран, похожий на этот:
Вид панели управления для пользователя с урезанными правами - Joomla ACL
Вы вошли в панель управления, но не видно ни меню, ни панели управления. Вы можете только выйти отсюда.
Есть ещё одна вещь, которую мы не настроили - это уровень доступа к панели управления. Учите, что уровни доступа отвечают за то, какая информация видна конкретному пользователю, включая модули, контент, и т.д. Меню являются модулем даже в панели управления Joomla. Это административный модуль и он имеет специальный уровень доступа. Таким образом, группа пользователя клиента должна будет иметь специальный уровень доступа.
Поскольку для работы в панели администратора нужен уровень доступа Special, я советую не использовать этот уровень доступа во фронтэнде Joomla.
Теперь сделайте следующее:
  • Суперпользователем назначьте Группе клиентов уровень доступа Special (смотрите урок "Joomla ACL: Уровни доступа", если требуется помощь в этом действии);
  • Выйдите из панели управления и войдите снова (при смене уровня доступа нужно выйти и снова войти, чтобы увидеть изменения в интерфейсе).
Теперь как клиент вы увидите что-то похожее на это:
Вид панели управления для клиента - Joomla ACL
Вот, что клиент сможет делать в панели администрирования на данном этапе:
  • Редактировать свой профиль, в том числе изменять имя пользователя и пароль (не являясь Суперпользователем, клиент не сможет изменять свою группу);
  • Просматривать ссылки на пункты помощи, которые и так доступны для всех гостей.
  • Выходить из профиля и просматривать фронтэнд сайта.
  • Просматривать 5 самых популярных материалов и последние 5 созданных материалов, с помощью модулей справа, но сможет редактировать эти материалы.
Это не так уж много, но все же уже что-то. Следующим шагом будет предоставление клиенту возможности редактирования, создания и изменения состояния материалов.

3a. Назначение уровней доступа: Материалы

Клиенту нужно иметь доступ к Менеджеру материалов в панели администратора Joomla. Первым делом для клиента нужно сделать Менеджер материалов в качестве пункта меню. Как только этот пункт станет виден для клиента, можно будет перейти к более специфическим правам доступа.
Предоставляем доступ к Менеджеру материалов в панели управления клиента
Настройки менеджера материалов - Joomla ACL
Перейдите к браузеру с клиентским видом, обновите страницу и посмотрите на Менеджер материалов и менеджер категорий, которые будут отображаться как иконки на панели управления, а также в верхнем меню.
К сожалению, нельзя разделить права доступа для Менеджера материалов и Менеджера категорий. Это большой недостаток ACL в Joomla.
Если посмотреть на Менеджер материалов, как клиент, то можно увидеть полный список материалов. Их нельзя редактировать и нельзя изменять их состояние. Нет кнопки для создания нового материала в верхнем правом углу, есть только иконка помощи.
Список статей в менеджер материалов - Joomla ACL
Редактирование всех материалов против редактирования категорий материалов
Следующий шаг – предоставление клиенту права редактирования и изменения состояния материалов. Нужно чтобы клиент изменял все материалов или только у некоторых категорий? Или нужно установить уровень доступа на основе материал-за-материалом?
Все зависит от обстоятельств. При настройке структуры категории на сайте, советую следующее:
  • Принимайте в расчет ACL, когда будете настраивать категории контента. Если нужно закрыть клиенту доступ к некоторым страницам сайта, нужно будет объединить все эти страницы под одной категорией, даже если их контент отличается. Так будет легче настраивать ACL;
  • Если клиент будет редактировать определенный набор материалов, имеет смысл поместить их в одну категорию;
  • Прибегать к изменению прав доступа на основе материал-за-материалом нужно только в особых случаях. Трудно обучить клиента настраивать права доступа к новым материалам. Установите права доступа к категории и клиент никогда не будет изменять их при создании новых материалов.
Вот что нужно делать в каждом из этих случаев.
Клиент редактирует все материалы
Если клиент редактирует все материалы, то настройте права доступа следующим образом:
Откройте "Материалы - Менеджер материалов - Настройки – Права", разрешите Группа клиентов создание, изменение, изменение состояния и изменение своего. Лично я не даю клиентам возможность удалять контент, так как это будет означать удаление из корзины. Они могут публиковать и отменять публикацию материавлов с помощью права доступа "Изменять состояние".
Настройки для группы клиентов в менеджере материалов - Joomla ACL
Клиент редактирует материалы в пределах категории (категорий)
Если клиент редактирует материалы в пределах категории или небольшого числа категорий, настройте каждую категорию следующим образом:
  • Придется разрешить доступ к управлению копмонентом в "Материалы - Менеджер материалов - Настройки – Права";
  • Зайдите в "Материалы - Менеджер категорий", выделите название категории в категории материалов, редактируемых клиентом. Внизу экрана вы увидите настройки прав доступа к каждой из категорий. Разрешите создание, изменение, изменение состояния и изменение своего;
  • Повторите то же самое для каждой категории материалов, где нужен доступ клиента.
Настройка прав доступа категории - Joomla ACL
Клиенту необходим доступ на основе материал-за-материалом
Вы также можете изменить отдельный материал как Суперпользователь. Прокрутите вниз страницы и установите там права доступа для клиента. Такой способ следует использовать в особых случаях. Настройка прав доступа на уровне категорий лучше с точки зрения удобства настройки в будущем.
Я предоставил клиенту возможность редактирования, изменения, изменения состояния любых материалов на сайте. Панель управления клиента теперь выглядит так:
Вид панели управления для клиента с менеджером материалов - Joomla ACL

3b. Назначение прав доступа: Медиа-менеджер

Права доступа сейчас назначены таким образом, что клиент может найти материал, выбрать редактирование и затем выбрать кнопку "Изображение" внизу окна редактирования материала. Появится экран медиа-менеджера, который выглядит так:
Медиа-менеджер - Joomla ACL
Учтите, что клиент может просматривать любое изображение, загруженное в медиа-менеджере, но нет интерфейса для загрузки на сайт нового. Это объясняется тем, что медиа-менеджер является отдельным от менеджера материалов компонентом и поэтому имеет свои права доступа. Кроме того, медиа-менеджер не виден в структуре меню панели управления Joomla при входе в качестве клиента.
Чтобы изменить настройки, зайдите в браузер с Суперпользователем, откройте "Материалы - Медиа-менеджер - Настройки – Права" и разрешите доступ к управлению компонентом и созданию.

3c. Назначение прав доступа: Меню

Можете догадаться, что будет дальше. Если клиенту нужно связывать материалы с пунктами меню, ему понадобится доступ к пункту меню "Меню" в панели управления.
Зайдите Суперпользователем в "Меню - Менеджер меню - Настройки – Права" и разрешите Группе клиентов доступ к управлению компонентом, созданию, изменению и изменению состояния.
К сожалению, нельзя разрешить клиенту добавлять дочерние пункты меню толко выбранного пункта меню или разрешить создавать только особые типы пунктов меню. Это было бы хорошим дополнением для ACL в Joomla.
Вот как теперь выглядит панель администратора клиента:
Расширенный вид панели управления для клиента - Joomla ACL

3d. Назначение прав доступа: компонент Ссылки

Теперь нужно предоставить клиенту доступ к компоненту "Ссылки" и только к этому компоненту. Это легко сделать.
Суперпользователем зайдите в "Компоненты - Ссылки - Настройки – Права" и разрешите Группе клиентов доступ к управлению компонентом, созданию, изменению и изменению состояния и изменению своего. Можете повторить эти действия для любого базового компонента Joomla, необходимого для клиента. Некоторые сторонние компоненты могут быть полностью интегрированы в систему ACL Joomla. Если важно использовать ACL на сайте, проверьте, учли ли вы это, выбирая компоненты для своего сайта.
Редакция статьи: Dmitry Rekun (b2z)

Оригинальная статья: Jen Kramer

Подписочка!



КОММЕНТАРИИ Обновить

Дмитрий

ДМИТРИЙ
ПРЯМАЯ ССЫЛКА
Екатерина, как дать доступ с фронтэнда группе паблик и регистеред к висивиг редактору штмл?
 24.11.2012 10:08
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Дмитрий, добрый день.

Отедльно к редактору? Нельзя. А вот к редактору JCE можно, но это конечно в рамках добавления статей.
 26.11.2012 15:05
Дмитрий, здравствуйте!
Подскажите пожалуйста, как в joomla 2.5 запретить доступ заказчику сайта только к шаблону? Купила шаблон за 18 евро, столько настраивала его, изменила почти все стили. Не хотелось бы, чтобы упертый заказчик влез в настройки и все испортил. Там как-то замочек ставят, не знаю, как это сделать. Joomla 2.5.
 14.02.2013 10:38
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Про замочек не знаю. Возможно он просто возник из-за того, что вы некорректно вышли из режима редактирования (такое случается и с материалами). А может просто запретить доступ к менеджеру шаблонов?
 14.02.2013 15:56
Здравствуйте. Никак не пойму смысл этого предложения "Если запретить группе пользователей возможность редактирования контента без категории, то нельзя переопределить ее для одной статьи в категории." Здесь нет ошибки?
 30.06.2013 09:51
Спасибо за хороший урок!!!
Возник маленький вопрос:
Как группе которой разрешено создание редактирование и т.д. в одной категории, разрешить добавление материалов в избранное при этом чтобы пользователи данной группы не могли изменять состояние в других категориях?
вариант Изменять состояние в Настройки менеджера материалов не подходит.
 16.09.2013 19:54
Здравствуйте, подскажите пожалуйста, а возможно ли открыть доступ в панели администрирован ия только к одному модулю, например к слайд-шоу, а к управлению другими модулями доступ должен быть закрыт.
 16.10.2013 12:18
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Добрый день. К сожалению - нет. У модулей нет прав доступа в админке...
 16.10.2013 19:44
А есть ли какой-нибудь компонент или плагин которыый позволить доступ в адмн панели только к определенным модулям?
 15.11.2013 19:25
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
В Joomla 3.2 был добавлен ACL для модулей.
 16.11.2013 18:25
Катерина, а что такое уровень доступа Special? Сколько не читала, везде пишут, что по умолчанию заданы три уровня: Public, Registered, Special. А где заданы? нет у меня такого, у меня много уровней. Или в русифицированно м как-то по другому называется?
 21.10.2013 20:27
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Ольга, эти три уровня есть везде, Вы просто не обращали внимания. В русской версии они так и называются. Почитайте основы ACL.
 22.10.2013 06:12
Здравствуйте! мне все понятно по статье, подскажите возможно ли предоставить доступ только к одной папке(где буду хранится все фото клиентов) с возможностью загрузки изображения при добавлении статьи с фронтенда пользователем?
 26.12.2013 23:45
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Добрый день! Joomla не управляет папками. Но такое можно организовать с помощью редактора JCE. У него есть Профили, в которых можно указывать доступы к конкретным папкам при загрузке изображений.
 28.12.2013 07:24
День добрый! Подскажите, пожалуйста как сделать так, чтобы в joomshoping доступ был только к редактированию товаров, а клиентов и пользователей человек не видел.
Заранее спасибо
 10.01.2014 06:40
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Добрый. К сожалению, это не зависит от самой Joomla, а от joomshopping. Возможно там даже и нет такой возможности. Попробуйте спросить на форуме.
 10.01.2014 07:58
Александp

АЛЕКСАНДP
ПРЯМАЯ ССЫЛКА
Добрый вечер, подскажите, пожалуйста, возможно ли в компоненте Joomla К2 сделать так, что бы конкретный пользователь мог редактировать определенные категории (из той же К2) ???
 10.01.2014 13:34
Dmitry Rekun
Dmitry Rekun JOOMLABLOG
ПРЯМАЯ ССЫЛКА
Добрый. Это зависит от К2, а не от Joomla. Посмотрите у них настройки категорий, возможно там есть поддержка ACL.

0 коммент.:

Отправить комментарий