от Олег Коровяков Дата 15.08.2021
Категория: ACL: Уровни доступа

ACL: Правила доступа

В статье: концепция ACL были изложены основные принципы ACL, а теперь приступим к внедрению простой системы, в которой пользователи по-разному видят контент на сайте. Для того чтобы у нас не возникло проблем с пониманием этого урока, нужно установить Joomla 1.7 или выше (сегодня мы говорим уже о версии 3.9.28).

1. Прежде чем нажимать на кнопки.

Изучите стратегию ACL перед реализацией на сайте. Начните с описания проблемы, которую собираетесь решить:

Напимер, на школьном сайте:

Обратите внимание на то, что мы говорим о видимом контенте. Речь не идет о редактировании, создании, удалении или работе над контентом. Наша проблема относится к уровнями доступа.

У нас есть три группы: Гости, ученики и учителя. Группа Public существует по умолчанию, но две группы - для учителей и учеников придется создать самим. Пользователи всего лишь логинятся на сайт, так что нужно назначить соответствующее право доступа для группы, которая сможет заходить во фронтэнд. Замечу, что учителя и ученики являются зарегистрированными пользователями. Нам понадобится создать собственный контент так, чтобы учителя видели свой контент и контент учеников, а ученики, в свою очередь только свой.

Вот как мы это осуществим:

  1. Создадим группы и назовем их "ученики" и "учителя";
  2. Назначим базовые права пользователей для групп. В данном случае, мы задаем права доступа для входа на сайт.
  3. Создадим наших пользователей и назначим их в группы. Я создам пользователя "студент" и пользователя "учитель".
  4. Создадим уровень доступа для учеников и другой уровень доступа для учителей.
  5. Создадим категории для учеников и учителей, затем, назначим правильные уровни доступа.
  6. Создадим статьи для учеников и учителей, потом назначим нужные уровни доступа.
  7. Создадим пункты меню для учеников и учителей. Назначим нужные уровни доступа.
  8. Проверим, корректно ли работают логины.

2. Создание собственных групп

Для этого нужно войти в панель администрирования сайта Joomla.
Войдем в верхнее меню и откроем "Пользователи - Создать группу". Появится экран:



Для задания имени группы, впишите "Группа учителей".
В качестве родительской группы выберите Public.
Нажмите "Сохранить и создать", чтобы сохранить группу учителей и создать новую.
Для задания имени группы, впишите "Группа учеников".
В качестве родительской группы выберите Public.
Нажмите "Сохранить и создать", чтобы сохранить группу учеников и вернуться к управлению пользователями.
Для чего я сделала для группы учителей и учеников собственные группы с родительской Public? При работе с ACL и создании групп поначалу может возникнуть путаница с правами доступа. Делая группы дочерними группы Public, можно контролировать права доступа напрямую, а не через наследственные связи между группами. В данном примере было бы целесообразно сделать эти группы дочерними группы Registered. Это сработает. Но когда вы работаете с более сложными примерами в ACL, учите, что делая пользовательские группы дочерними Public, вы избегаете сложности. Кроме того, это может быть полезно при отладке.

3. Назначение базовых прав доступа

Откройте "Сайт - Общие настройки" и вкладку Права. У группы учеников и учителей выставьте права входа на сайт со значением "Разрешено". Остальные настройки оставьте как "Унаследовано". Эти группы наследуют права доступа у Public, так что, по умолчанию, группам учеников и учителей не разрешается делать на сайте что угодно.

4. Создание пользователей и назначение их в группы

Теперь в группах нам нужно создать пользователей. Для этого, откройте "Пользователи - Создать пользователя" и появится экран:

Имя пользователя: введите имя пользователя. Я ввел Ms. Jones.
Логин: введите для него имя пользователя: учитель.
Пароль и подтверждение пароля: введите пароль дважды.
Email: введите электронный адрес пользователя (если пользователя не существует, используйте Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript..).
Пропустите остальные поля и прокрутите вниз до назначенных групп. По умолчанию выбрана группа Registered.

Выберите из списка "Группа учителей". Учитель Ms. Jones назначен в группу зарегистрированных пользователей и в группу учителей.

Нажмите "Сохранить и создать" и повторите те же шаги для группы учеников. Имя ученика - David Smith, а имя пользователя david. Используйте для него электронный адрес Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript., если нужно. Назначьте David в группу студентов и группу зарегистрированных. В конце нажмите "Сохранить и закрыть".

Почему мы назначили этих пользователей в группу зарегистрированных пользователей наряду с другими? Иногда пригодиться информация, которую может видеть только залогиненный пользователь, а не какая-то отдельная группа. Назначив пользователей в группу зарегистрированных можно, например, показывать меню пользователя только тем, кто вошел на сайт, а особые пункты меню – особым группам. Это пригодится при настройке страницы входа на сайт.

5. Создание уровней доступа

У нас есть пользователи, базовые права доступа и группы пользователей. Теперь создадим уровни доступа: один – для учеников, другой – для учителей.

Идите в "Пользователи - Уровни доступа - Создать уровень доступа" и увидите следующую картину:



В названии уровня введите "Уровень доступа учителей". Отметьте галочками поля рядом с группой пользователей "Группа учителей". Это даст возможность только им видеть соответствующий контент.

Нажмите "Сохранить и создать", введите "Уровень доступа учеников" в названии и отметьте галочками поля "Группа учителей" и "Группа учеников". Теперь учителя видят контент для учеников. Нажмите "Сохранить и закрыть".

Почему мы не назначили для зарегистрированных пользователей уровень доступа учителей или учеников? Делая это, мы открываем для всех зарегистрированных пользователей информацию, предназначенную только для учеников и/или учителей. Продумайте тщательно, кому и какой уровень доступа нужно назначить.

Почему мы не дали Суперпользователю тот же уровень доступа, что и учителей и учеников? Когда Суперпользователи входят во фронтэнд сайта, они не смогут видеть контент, предназначенный только для учеников и/или учителей. Его можно будет видеть и редактировать в панели администрирования сайта. Если Суперпользователю нужно видеть этот контент, назначьте ему уровень доступа учителей и учеников.

6. Создание категорий

На этом сайте, я создал категории контента, предназначенные только для учителей ("Материалы - Менеджер категорий - Создать категорию"):



При создании категории, укажите в качестве заголовка "Категория учителей", выставьте значение доступа в выпадающем меню "Доступ" как "Уровень доступа учителей". Я также создал категорию для студентов. Поставил соответствующее значение доступа "Уровень доступа учеников", и дал название категории "Категория студентов".

Почему мы создали специальную категорию для контента учеников и учителей? Контент в Joomla можно создавать где угодно, а потом назначать уровень доступа к статьям. У большинства статей будет публичный уровень доступа (Public), но можно ввести исключение на уровне зарегистрированных пользователей, учителей и учеников, если потребуется. Однако если упорядочить статьи в категории, то можно намного проще обращаться с контентом и уровнями доступа. Всегда можно создать подкатегории внутри категории учителей, если контент выходит за рамки одной категории.

Как только установлен уровень доступа к категории, он наследуется всеми статьями в этой категории, даже если вы оставите у них уровень доступа публичный (Public).

7. Создание статей

Далее, в категории учителей я настроил статью. Для ее создания, нажмите "Материалы - Менеджер материалов - Создать материал":



Заполненные мною поля:

Если уровень доступа к категории наследуется статьей, то почему нужно устанавливать его для каждой статьи? Можно оставить доступ по умолчанию для Public, но статья все равно будет видна только для учителей и учеников. Однако если установить уровень доступа к каждой статье, спустя какое-то время я смогу увидеть принцип наследования доступа к конкретной статье, потому что она будет отмечена соответственно.

8. Создание пунктов меню



В главном меню ("Менеджер меню - Main Menu") добавим две ссылки: одну – для учителей, другую – для учеников.

Для создания ссылки, я выбрал "Создать" в правом верхнем углу, далее "Блог категории" в качестве типа пункта меню и ввел следующую информацию:


Почему нужно выбирать "Блог категории"? Я сделал это в качестве примера. Вы можете выбрать любой другой тип на ваш вкус.

Почему нужно выставлять уровень доступа для меню? Разве он не наследуется у статьи? В случае с пунктами меню, уровень доступа к ним не зависит от контента, на который они ссылаются. Проще говоря, статья может быть с уровнем доступа "для учителей", а пункт меню иметь публичный уровень доступа (Public). Предположим, что у модуля, отображающего меню тоже публичный уровень доступа, тогда ссылка будет видна всем посетителям сайта. При нажатии на ссылку без права просмотра контента по ней, пользователь увидит соответствующее сообщение.

Такая ситуация удобна, когда вы продаете подписки на информацию ("Купите подписку и увидите информацию под ссылкой!"). Но если вы не хотите вводить пользователя в заблуждение, то установите у пункта меню уровень доступа соответствующий контенту под ссылкой.

9. Проверка логинов

Наконец, мы настроили все типы контента для студентов и учителей на сайте и можем их проверить.

Зайдите во фронтэнд сайта. Введите имя пользователя и пароль для учителя Ms. Jones. Вспомните - это было слово "учитель" в качестве имени пользователя и пароль, который вы придумали. Если все сделано правильно, в главном меню появятся две ссылки: одна – "Информация для учителей", другая – "Информация для учеников".

Вернитесь на страницу входа на сайт, чтобы выйти из системы. Теперь повторите те же шаги для студента David Smith с именем пользователя david и вашим паролем. Если все сделано правильно, в главном меню появится ссылка "Информация для учеников".

10. Подведём итог

Если вы все сделали в соответствии с руководством, то, скорее всего, у вас это заняло не больше 15 минут.
Не кажется ли вам, что логин был не очень хорош? Мне тоже так показалось. В следующей статье я покажу, как настроить экран входа в систему для всех групп пользователей, основываясь на данном примере.

Схожие записи

Создать комментарий