Как использовать JACLPlus!

  • 16.03.2006

Тем кому нужно разграничить доступ к разным разделам сайта, но стандартных групп пользователей Joomla не хватает, часто (практически всегда) советуют компонент JACLPlus. Но как показывает собственная практика, компонент этот немного запутанный. Поэтому вот перевод примера с сайта разработчика.

Мы думаем, что было бы неплохо объяснить Вам, что Вы можете сделать, используя JACLPlus. Мы знаем, что уже есть или будет несколько хаков для расширения ACL Joomla. Однако, мы уверены, как только Вы узнаете, как использовать JACLPlus с несколькими другими компонентами, Вы не выберите другие хаки для расширения ACL Joomla да и, наверное, другие CMS тоже.

JACLPlus были разработаны, чтобы сделать Joomla более мощной. Поэтому, каждая модификация исходного кода ядра была тщательно проработана, чтобы гарантировать отсутствие снижения качества работы после модификации. В наших модификациях файлов ядра мы не добавили ни одного SQL-запроса. Все, что мы сделали,— только изменили соответствующие SQL-запросы. Однако, конечно, мы действительно добавили некоторые функции и переменные и изменили несколько ТАБЛИЦ базы данных (добавили некоторые поля), чтобы хранить важные данные для предотвращения дополнительных запросов к базе данных.

Хорошо, это было введение. Теперь давайте посмотрим, что Вы можете сделать, используя JACLPlus, или, более точно, как Вы можете контролировать доступ к Вашему контенту.

Небольшой пример использования JACLPlus

Допустим, Вы хотите создать вебсайт с системой регистрации пользователей и у Вас много типов пользователей. Изначально на сайте доступна бесплатная регистрация, а все зарегистрированные пользователи станут «Обычными пользователями». Спустя несколько месяцев, Вы решаете, что некоторые «Обычные пользователи» вносят значительный вклад в развитие вашего вебсайта, и Вы решаете сделать их «VIP пользователями», и создаёте специальные разделы, которые могут просматривать только «VIP пользователи».

Некоторые пользователи не имеют времени, чтобы внести свой вклад в развитие вашего вебсайта, однако, они желают платить Вам, чтобы получить доступ к тем «специальным» разделам. Тогда Вы решаете создать группу «Платных пользователей». Однако, некоторые участники группы «Платных пользователей» хотят иметь доступ только к нескольким подразделам «специального» раздела, чтобы платить поменьше. И Вы создаёте несколько групп для «Платных пользователей».

Допустим, Вы решаете создать следующие группы пользователей:

  1. Registered (Бесплатно)
  2. Бесплатные VIP
  3. Платные
  4. Платные GOLD
  5. Платные VIP

А на вашем сайте есть следующие группы элементов (элементы – контент, компоненты, модули, меню и тд.):

  1. Группа элементов А – Доступно всем пользователям, включая незарегистрированных
  2. Группа элементов Б – Доступно всем зарегистрированным пользователям (Registered)
  3. Группа элементов В – Доступно «Бесплатным VIP» и «Платным GOLD»
  4. Группа элементов Г – Доступно «Бесплатным VIP» и «Платным VIP»
  5. Группа элементов Д – Доступно всем платным («Платные», «Платные GOLD», «Платные VIP») и «Бесплатным VIP»

Теперь давайте посмотрим как можно создать ACL.

По умолчанию, в системе есть 3 уровня доступа, и нам необходимо (в нашем конкретном случае) создать 3 уровня доступа:

  1. Public
  2. Registered
  3. Special
  4. ЭлементыВ
  5. ЭлементыГ
  6. ЭлементыД

Теперь изменим уровень доступа для элементов следующим образом:

  1. Группа элементов A — уровень доступа устанавливаем «Public»
  2. Группа элементов Б — уровень доступа устанавливаем «Registered»
  3. Группа элементов В — уровень доступа устанавливаем «ЭлементыВ»
  4. Группа элементов Г — уровень доступа устанавливаем «ЭлементыГ»
  5. Группа элементов Д — уровень доступа устанавливаем «ЭлементыД»

И устанавливаем уровень доступа для групп:

  1. Registered – Public, Registered
  2. Бесплатные VIP – Public, Registered, «ЭлементыВ», «ЭлементыГ», «ЭлементыД»
  3. Платные – Public, Registered, «ЭлементыД»
  4. Платные GOLD – Public, Registered, «ЭлементыВ, «ЭлементыД»
  5. Платные VIP – Public, Registered, «ЭлементыГ», «ЭлементыД»
Выглядит очень просто. Я специально постарался привести простейший пример, который был бы понятен каждому.

Если же Вы хотите создать более сложный ACL,— все в ваших руках. Все, что Вы должны иметь в виду,— это то, что если группа элементов имеет элементы с конфликтом доступа, разбейте эту группу элементов на 2 группы и создайте для каждой свой уровень доступа.

Давайте теперь немного усложним наш пример.

Несколько месяцев спустя, Вы решаете, что к определенным элементам в «Группе элементов Д» можно получить доступ только платным участникам. Однако, не существует такой группы элементов для этих конкретных элементов. Что делать? Вы должны создать новую группу элементов по имени «Группа элементов Е» и переместить выбранные элементы в эту группу:

  1. Группа элементов А — доступно всем пользователям, включая незарегистрированных
  2. Группа элементов Б — доступно всем зарегистрированным пользователям
  3. Группа элементов В — доступно «Бесплатным VIP» и «Платным GOLD»
  4. Группа элементов Г — доступно «Бесплатным VIP» и «Платным VIP»
  5. Группа элементов Д — доступно всем платным («Платные», «Платные GOLD», «Платные VIP») и «Бесплатным VIP»
  6. Группа элементов Е — доступно только всем платным («Платные», «Платные GOLD», «Платные VIP»)

И добавляем новый уровень доступа по имени «ЭлементыЕ». Теперь уровни доступа ваших групп будут вот такими:

  1. Registered — Public, Registered
  2. Бесплатные VIP — Public, Registered, «ЭлементыВ», «ЭлементыГ», «ЭлементыД»
  3. Платные — Public, Registered, «ЭлементыД», «ЭлементыЕ»
  4. Платные GOLD — Public, Registered, «ЭлементыВ, «ЭлементыД», «ЭлементыЕ»
  5. Платные VIP – Public, Registered, «ЭлементыГ», «ЭлементыД», «ЭлементыЕ»

Это интересно:

Добавить комментарий

Обновить
Защитный код

Joomla!® CMS — пожалуй, лучшая система управления контентом с открытым исходным кодом

Joomla! — это больше, чем просто программное обеспечение, это люди, включающие разработчиков, дизайнеров, системных администраторов, переводчиков, копирайтеров, и, что самое главное — простых пользователей.

Мы рады пригласить вас в ряды нашего сообщества!

Скачать Joomla! 3 Документация Joomla! CMS Свернуть

Расширения Joomla

Новости портала

Новое в блогах

Видео