Загрузка...

Для того, чтобы разобраться с системой контроля доступа Joomla 1.6. нужно понимать все термины, которые в ней используются. Без четкого осознания того, что вы делаете, лучше не начинать.

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

Пользователем является любой человек, посещающий ваш сайт. Чтобы стать пользователем не обязательно проходить регистрацию на сайте. Достаточно просто зайти на него. Каждый пользователь должен относиться к какой-либо группе пользователей. Права нельзя назначить отдельному пользователю, а можно только группе.

Группа

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

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

Не путайте уровни доступа  с группами. Здесь есть тонкая грань, которая отличает два этих термина. Вспомним Joomla 1.5. Групп там было много, но если мы заходили в настройки, например, модуля, то в выпадающем списке опции «Уровень доступа» видели только: Public, Registered  и Special. Первые два уровня давали доступ либо всем пользователям, либо только зарегистрированным, а уровень Special давал доступ только пользователям, находящимся в группе «Автор» и выше. В Joomla 1.6. уровни доступа используются для тех же целей, что и в 1.5, но, как и в случае с группами, мы можем их создавать в неограниченном количестве. В уровень доступа могут быть включены одна или несколько групп. Уровни доступа определяют лишь видимость того или иного элемента сайта, но не возможность им управлять. Для того, управлять какой-либо частью сайта, созданы права доступа.

Права доступа

Права доступа используются для того, чтобы разрешить/запретить пользователям определенные действия в определенных частях сайта. В отличие от уровней доступа и групп, набор прав доступа ограничен. В Joomla 1.6 существуют следующие права доступа:

  • Вход на сайт – позволяет пользователям группы проходить авторизацию на сайте (на лицевой панели)
  • Вход в панель – позволяет пользователям группы входить в панель управления
  • Суперадминистратор – позволяет пользователям группы выполнять любые действия по всему сайту, независимо от любых других настроек прав доступа
  • Доступ к компоненту – позволяет пользователям группы получать доступ ко всем разделам панели управления, за исключением Менеджера общих настроек
  • Создавать – позволяет пользователям создавать любое содержимое в любом расширении
  • Удалять – позволяет пользователям группы удалять любое содержимое в любом расширении
  • Изменять – позволяет пользователям группы изменять(редактировать) любое содержимое в любом расширении
  • Изменять состояние – позволяет пользователям в группе изменить состояние любого содержимого в любом расширении
  • Изменять свои – позволяет пользователям в группе изменять содержимое, владельцами (авторами) которого они являются в любом расширении

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

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

Выбор нового значения(может быть: унаследовано, разрешено, запрещено)

Если изменить значение этого параметра, оно будет применено для данного материала. Обратите внимание:

Унаследовано - означает, что будет применено значение данного права, указанное в общих настройках, в вышестоящей группе и в категории.

Запрещено - означает, что независимо от значения в общих настройках , в вышестоящей группе и в категории, пользователи данной группы не смогут выполнить указанное действие над этим материалом.

Разрешено - означает, что пользователи данной группы смогут выполнить указанное действие над этим материалом (но, в случае противоречия со значением в общих настройках сайта, в вышестоящей группе или в категории, право предоставлено не будет. Противоречие будет отмечено как Не разрешено (со значком блокировки)).

Мы видим, что из частных настроек(не общих, находящихся в категории, материале, и.т.д, назовем их частные) можно наследовать, ограничивать или расширять права.

Кроме всего вышеперечисленного есть еще одна тонкость, которая окончательно запутывает:

Значение Не задано может быть выбрано только для группы пользователей Все и только в Общих настройках сайта. Группа Все является верхней в иерархии всех групп пользователей. Значения всех прав, указанные, как Не задано будут трактоваться, как Запрещено, но их можно будет переопределить в дочерних группах, компонентах, категориях и объектах.

Т.е Не задано(Не определено) это тоже самое, что и Запрещено, но только с возможностью переопределения без блокировки в дочерних группах. Если вы ничего не поняли, то поздравляю, вы – обычный человек :-) . Все это осмыслится, но далеко не сразу. Советую выполнить тестовый пример, который идет ниже для большего понимания.

Прежде, чем идти дальше, советую еще раз перечитать все термины и постараться максимально их понять, иначе может возникнуть путаница.

Система контроля доступа Joomla 1.6. Пример работы с правами доступа.

Чтобы упорядочить хаос, возникающий при знакомстве с системой контроля доступа Joomla 1.6, разберем пример.

Задача

Требуется создать три группы пользователей:

  • group1
  • group2
  • group3

и три категории:

  • category1
  • category2
  • category3

При этом должны соблюдаться следующие условия:

  1. Группа group1 должна иметь доступ к категории category1 только для чтения статей и не должна иметь доступа к категориям category2 и category3
  2. Группа group2 должна иметь доступ к категории category2 для чтения и редактирования статей и не должна иметь доступа к категориям category1 и category3.
  3. Группа group3 должна иметь доступ к категории category3 для чтения, редактирования и добавления статей и не должна иметь доступа к категориям category1 и category2
  4. Остальные пользователи не должны иметь доступа к категориям category1, category2 и category3.

 Решение

Для начала составим последовательность шагов решения задачи(напишем, что нужно сделать):

  1. Создать группы group1group2 и group3
  2. Назначить глобальные права доступа для созданных групп
  3. Создать уровень доступа для каждой из групп и связать группы с уровнями доступа
  4. Создать по одному пользователю для каждой группы и добавить их в группы
  5. Создать категории category1category2category3 и назначить категориям права, подходящие под каждую из групп.
  6. Проверить результаты

Теперь последовательно реализуем все шаги.

Шаг 1. Создание групп group1group2 и group3

  • Переходим в админке в «Пользователи» –>  «Группы» –> «Создать группу»
  • Вводим название группы и родительскую категорию.

Родительские категории должны быть следующими:

  • для группы group1 – Public
  • для группы group2 – Public
  • для группы group3 – Public

Joomla ACL

Шаг 2. Назначение глобальных прав доступа для групп group1group2 и group3

– Переходим в админке в «Сайт» –>  «Общие настройки» –> Вкладка «Права»

Joomla ACL

Для каждой из групп назначаем следующие права:

 

group1

group2

group3

Вход на сайт

Разрешено

Разрешено

Разрешено

Вход в панель

Не определено

Не определено

Не определено

Суперадминистратор

Не определено

Не определено

Не определено

Доступ к компоненту

Не определено

Не определено

Не определено

Создавать

Не определено

Не определено

Не определено

Удалять

Не определено

Не определено

Не определено

Изменять

Не определено

Не определено

Не определено

Изменять состояние

Не определено

Не определено

Не определено

Изменять свои

Не определено

Не определено

Не определено

Почему права установлены именно так? Сейчас мы работаем в глобальных настройках и права, заданные здесь будут распространяться на весь сайт. В нашей задаче группа group2 должна иметь возможность редактирования, но только одной категории category2. Если мы дадим ей права в глобальной конфигурации, то у нее появится возможность редактирования в любой категории сайта, кроме тех, в настройках которого это прямо запрещено. Согласитесь, в нашем случае гораздо проще именно разрешить редактирование только в настройках одной категории, чем запрещать его в настройках всех категорий, кроме одной. Заметьте, в глобальной конфигурации мы должны оставить именно права Не определенно. Если мы выставим здесь Запрещено, то в настройках категории уже не сможем выставить разрешения.

Шаг 3. Создание уровней доступа для групп group1group2 и group3

Уровни доступа мы создаем для того, чтобы ограничить видимость определенных категорий, материалов и модулей сайта для определенных групп. Из предыдущего шага видно, что все три группы могут просматривать все материалы. Для ограничения просмотра создадим три уровня доступа:

  • для группы group1 – level1
  • для группы group2 – level2
  • для группы group3 – level3

– Переходим в админке в «Пользователи» –>  «Уровни доступа» –> «Создать уровень доступа»

Вводим название уровня и группу(группы), которые будут в него входить. После создания уровней доступа видим в списке уровней следующее:

Joomla ACL

Шаг 4. Создание пользователей для каждой из групп group1group2 и group3

Для того, чтобы проверить правильность настройки прав, мы должны создать в каждой из групп group1group2 и group3 по одному пользователю. После настройки мы сможем авторизоваться под каждым из них на сайте и проверить правильность доступа и прав.

Для создания пользователей:

– Переходим в админке в «Пользователи» –>  «Менеджер пользователей» –> «Создать пользователя»

Вводим имя пользователя, логин, пароль, подтверждение пароля, email и выбираем группу, в которую пользователь будет помещен. Я создал следующих пользователей:

  • для группы group1 – user1
  • для группы group2 – user2
  • для группы group3 – user3

Joomla ACL

Шаг 5. Создание категорий и назначение им прав, подходящих под каждую из групп

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

– Переходим в админке в «Материалы» –>  «Менеджер категорий» –> «Создать категорию»

Задаем название категории, алиас, уровень доступа и кликаем по кнопке «Установить разрешения». После этого задаем права для группы и сохраняем категорию. Данные для всех категорий показаны в таблице ниже:

 

Категория1

Категория2

Категория3

Название

category1

category2

category3

Доступ

level1

level2

level3

Группа

group1

group2

group3

Создавать

Не разрешено

Не разрешено

Разрешено

Удалять

Не разрешено

Не разрешено

Не разрешено

Изменять

Не разрешено

Разрешено

Разрешено

Изменять состояние

Не разрешено

Не разрешено

Разрешено

Изменять свои

Не разрешено

Разрешено

Разрешено

Т.е. для каждой из категорий мы устанавливаем собственный уровень доступа, тем самым определяя кто будет их видеть, а также задаем требующиеся права.

После создания всех категорий видим их в менеджере категорий:

Joomla ACL

Теперь в каждую их категорий нужно поместить хотя бы по одной статье. Это требуется для того, чтобы можно было проверить правильность настройки прав. Я создал следующие статьи:

  • для категории category1– article1
  • для категории category2– article2
  • для категории category3– article3

Статьи создаются через менеджер материалов и связываются с категориями.

После создания статей для, так сказать, чистоты эксперимента, создадим отдельное меню, в которое добавим ссылки на категории с материалами. Меню я назову Wedal menu. В нем будут следующие пункты:

  • пункт1 – показывает список материалов категории1
  • пункт2 – показывает список материалов категории2
  • пункт3 – показывает список материалов категории3

Добавить – позволяет добавлять материалы пользователям из group3.

Joomla ACL

Модуль с названием Wedal menu и вышеописанными пунктами будет доступен только зарегистрированным пользователям и показан в левой колонке сайта.

Для того, чтобы наши группы также имели доступ к модулю Wedal menu их нужно включить в уровень доступа Registered!

Теперь при авторизации на сайте можно видеть модуль с меню:

Joomla ACL

Шаг 6. Проверка результатов

Для проверки результатов поочередно авторизовываемся на сайте под пользователями user1user2 и user3 и проверяем что доступно, а что нет.

В частности user1 имеет возможность просматривать категорию category1, но не имеет возможности просматривать category2 и category3.Вместо них появляется ошибка 404.

Joomla ACL

Joomla ACL

User2 имеет возможность просматривать категорию category2, но не имеет возможности просматривать category1 и category3. В категории category2 у него есть возможность вносить изменения в материалы:

Joomla ACL

User3 имеет возможность просматривать категорию category3, но не имеет возможности просматривать category1 и category2. В категории category3 у него есть возможность вносить изменения в материалы.

Joomla ACL

Кроме всего этого он имеет возможность добавлять новые материалы в category3(для него работает кнопка «Добавить»).

Joomla ACL

Конечно, ошибка 404 это не есть хорошо, но здесь она показана лишь для наглядности. В идеале при создании пунктов меню Wedal menu мы должны были задать для каждого из них соответствующий уровень доступа level1, level2, level3.

На этом задача решена. Желательно еще протестировать доступ нестандартными способами, например, попытаться перейти прямо по url в статью, из недоступной группы, и.т.д.

Примечание

На момент написания статьи текущая версия Joomla 1.6 – 1.6.0. При разборе вышеописанного примера я заметил некоторые проблемы в работе системы контроля доступа. Так, если настроить все, как описано выше, пользователь из группы group2 сможет зайти на страницу редактирования статьи из категории category2, но там имеется обязательное для заполнения поле «Категория». В выпадающем списке, по идее, должна быть категория category2, но в нем нет ничего. Таким образом, применить изменения не получается. Категория в выпадающем списке появляется, но только если дать группе group2 права на добавление новостей. К сожалению, при этом они могут не только редактировать статьи, но и добавлять новые.

{

}