четверг, 14 июля 2011 г.

ACL (Access Control List) в Joomla 1.6. (продолжение 2)

Доброго времени суток. В предыдущих постах мы начали рассмотрение уровни доступа в CMS Joomla 1.6. В статье «ACL (Access Control List) в Joomla 1.6. Права доступа в Joomla 1.6.» мы ввели основные определения и поставили задачу. В статье «ACL (Access Control List) в Joomla 1.6. Права доступа в Joomla 1.6. (продолжение)» мы определились с планом решения данной задачи и решили её. В этом посту я хотел бы немного изменить и задачу и решить ее для полного представления об уровнях доступа в CMS Joomla. Приступим …

Перед нами стояла задача:
Допустим, у нас есть университет с тремя факультетами:
  1. Математика.
  2. Астрономия.
  3. Философия.

Постановка задачи:
  1. Студенты факультета «Математики» имеют право добавлять, изменять, удалять статьи, которые находяться в подразделе «По математика» раздела «Математика». А подразделы «По астраномии» и «По философии» только просматривать.
  2. Студенты факультета «Астрономия» имеют право добавлять, изменять, удалять статьи, которые находяться в подразделе «По астрономии» раздела «Рефераты». А подразделы «По математике» и «По философии» только просматривать.
  3. Аналогично и для факультета «Философии» -- могут делать все в «По философии» и только просматривать в «По математике» и «По астрономии».

Которую мы благополучно решили. Теперь представим, что у нас есть студенты, которые любят пакостить, они меняют содержимое других статей (не написанных ими), создают статьи, в которых не очень хорошо отзываются о преподавателях. И появилась группа пользователей-преподавателей, которые в отдельной категории обсуждают учебный процесс и к этой категории имеют доступ только они (студентам она не видна, также не видна обычным пользователям).
Итак, наша задача изменилась следующим образом:
1.   Студенты факультета «Математики» имеют право добавлять, а изменять и удалять только свои статьи(автором, которых они являются), которые находятся в подразделе «По математика» раздела «Математика». А подразделы «По астрономии» и «По философии» только просматривать. Категорию «Преподаватели» не видят.
2.   Студенты факультета «Астрономия» имеют право добавлять, а изменять и удалять только свои статьи, которые находятся в подразделе «По астрономии» раздела «Рефераты». А подразделы «По математике» и «По философии» только просматривать. Категорию «Преподаватели» не видят.
3.   Аналогично и для факультета «Философии».
4.   Новая группа пользователей, которая в категории «Преподаватели» могут делать все, а также модерировать контент в категориях «По математике», «По астрономии», «По философии» .
Составим план решения нашей задачи:
1.   Изменить глобальные права доступа для групп «gr_math», «gr_astr», «gr_phil».
2.   Создать новую группу  «gr_prepod» и назначить ей глобальные права.
3.   Создать новый уровень доступа «lv_prepod» и поместить туда только группу  «gr_prepod».
4.   Создать категорию  «Преподаватели» и в ней подкатегорию «Учебные планы» и назначить ей уровень доступа и права доступа.
5.   Создать в категории «Учебные планы» материал.
6.   Создадим меню «Учебные планы» и добавим модуль для отображения данного меню.
7.   Создадим пользователя, который будет входить в состав группы «Преподаватели».
Задача поставлена, план составлен – приступим.
Из первого пункта нашего плана, изменим глобальные права доступа для наших групп: «gr_math», «gr_astr» и «gr_phil». Переходим: Сайт->Общие настройки->Права. Заходим в необходимую группу и устанавливаем необходимые разрешения:
  • Вход на сайт – Разрешить (необходимо, чтобы пользователи данной группы могли пройти авторизацию на нашем сайте);
  • Вход в панель – Запретить (необходимо, чтобы пользователи, принадлежащие данной группе не могли попасть в панель управления);
  • Суперадминистратор – Запретить (чтобы запретить пользователям выполнять любые действия на сайте);
  • Доступ к компоненту – Запретить (чтобы пользователи не смогли воспользоваться разделами панели управления);
  • Создавать – Разрешить (необходимо, для создания материалов);
  • Удалять – Запретить (чтобы пользователи, данной группы не могли удалять материалы);
  • Изменять – Запретить (запрещаем пользователям редактировать материал);
  • Изменять состояние – Запретить (запрещаем пользователям менять состояние материала, т.е. при добавление материал попадает на рассмотрение к модератору, а тот в свою очередь может публиковать или не публиковать материал);
  • Изменять свои – Разрешить (разрешаем пользователям редактировать материал автором, которого он является).

Аналогичные права устанавливаем и для оставшихся групп.
Переходим ко второму пункту нашего плана «Создание новой группы: gr_prepod и назначение ей глобальных прав доступа ». Переходим:  Пользователи->Группы пользователей и жмем «Создать». В окне «Менеджер категорий: Создать категории» создаем новую категорию «gr_prepod», она входи в группу «Public». Теперь, когда у нас появилась новая группа, переходим:  Сайт ->Общие настройки->Права и в нашей группе «gr_prepod» устанавливаем следующие разрешения:
  • Вход на сайт – Разрешить (необходимо, чтобы пользователи данной группы могли пройти авторизацию на нашем сайте);
  • Вход в панель – Запретить (необходимо, чтобы пользователи, принадлежащие данной группе не могли попасть в панель управления);
  • Суперадминистратор – Запретить (чтобы запретить пользователям выполнять любые действия на сайте);
  • Доступ к компоненту – Запретить (чтобы пользователи не смогли воспользоваться разделами панели управления);
  • Создавать – Разрешить (необходимо, для создания материалов);
  • Удалять – Разрешить (чтобы пользователи, данной группы могли удалять материалы);
  • Изменять – Разрешить (разрешает пользователям редактировать материал);
  • Изменять состояние – Разрешить (разрешаем пользователям, данной группы, менять состояние материала, т.е. опубликовать или снять с публикации данный материал, переместить его в архив или в корзину);
  • Изменять свои – Разрешить (разрешаем пользователям редактировать материал автором, которого он является).

Со вторым пунктом тоже справились.
Переходим к третьему пункту – Созданию уровня доступа и помещению в него нашей новой группы. Переходим: Пользователи ->Уровни доступа и жмем «Создать». В окне «Менеджер пользователей: Создать уровень доступа» создаем новый уровень доступа «lv_prepod» и помещаем в него только группу  «gr_prepod».
Приступим к выполнению четвертого пункта плана решения поставленной задачи. Переходим: Материалы -> Менеджер категорий и жмем «Создать». В открывшемся окне создаем категорию «Преподаватели»  (уровень доступа ставим lv_prepod, чтобы только пользователи из группы, которая входит в данный уровень, могли видеть эту категорию; и в поле «Родитель» оставляем «Нет родителя», наша категория находиться в корне). После создания категории «Преподаватели», создадим еще одну подкатегорию «Учебные планы» (уровень доступа ставим lv_prepod, в поле «Родитель» ставим «Преподаватели»). Теперь разберемся с правами доступа для данной категории. В группах «gr_math», «gr_astr» и «gr_phil» ставим все разрешения на «Запретить». А в группе «gr_prepod» разрешения не меняем (по умолчанию стоит «Унаследовать»), они будут наследоваться из глобальных настроек данной группы.
Теперь давайте создадим материал и поместим его в нашу группу «Учебные планы». Переходим: Материалы -> Менеджер материалов -> Создать материал. При создании материала помещаем его в категорию «Учебные планы».
Приступим к созданию меню. Создадим меню «Преподаватели» и в нем создадим пункт «Учебные планы». Для этого переходим: Меню -> Менеджер меню -> Создать меню. Далее переходим: Меню -> Преподаватели ->Создать пункт меню. (Тип пункта меню: Список всех материалов категории, Доступ: lv_prepod, Родительский элемент:  Корневой пункт меню). Давайте создадим модуль, который будет отображать наше меню, переходим: Расширения->Менеджер модулей и жмем «Создать». В окне «Выбор типа модуля» выбираем «Меню». Назовем его «Преподаватели», установим уровень доступа «lv_prepod».
Осталось только создать пользователя, поместить его в группу «gr_prepod» и  проверить, как мы справились с нашей задачей.
Надеюсь, данной статьей мы разложили по полочкам: что такое уровни доступа, что такое права доступа и чем они отличаются друг от друга. Также в статье мы показали иерархию ACL CMS Joomla, наследование разрешений.

Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



0 коммент.:

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