Новости Joomla на русском
Главная Новости Форум Статьи и обзоры Вопросы и Ответы
Joomla! по-русски

Вышел релиз безопасности Joomla 2.5.4! Исправлено 2 ошибки безопасности низкого уровня и более 150 различных недочетов. Разработчики настоятельно рекомендуют обновиться до Joomla 2.5.4. Обновленный пакет локализации уже доступен для загрузки.

 
Thursday, 17 May 2012 Главная arrow Новости arrow Joomla! Access Control Plugin
Категории новостей
Russian Joomla Translation Team
Безопасность
Популярные статьи

Advego.ru - наполнение сайтов информацией

Замечание

Joomla!® является торговой маркой компании Open Source Matters inc в США и др. странах. Название Joomla! и его вариации, такие как J, Joom и т.д., используются в рамках ограниченной лицензии, определённой компанией Open Source Matters. Проект Joomlaportal не относится к компании Open Source Matters или проекту Joomla! Точки зрения представленные на данном сайте не являются официальными точками зрения Joomla Project или Open Source Matters.

Торговая марка Joomla® и логотип используются в рамках ограниченной лицензии, предоставленной Open Source Matters.

Joomla! Access Control Plugin

11.02.2008 | Денис НосовНовости / Плагины

Разработчик Roberto Aloi (a.k.a. Prof3ta) опубликовал плагин Joomla! Access Control Plugin позволяющий более четко и гибко настроить уровни доступа пользователей в Joomla 1.5.Это довольно простой плагин, который должен решить некоторые базовые уровни контроля доступа Joomla 1.5.х - компоненты, модули и т.д.

Как Вы возможно знаете, Joomla 1.5 не дает гранулированного уровня доступа, хотя ACL должно быть доспупным в версии Joomla 1.6, но это пока что стоит под вопросом.Если Вам необходимо разбить пользователей по группам (например студентов и преподавателей), давая им конкретные уровни доступа как в Административной части, так и в Фронтальной, то в этом Вам поможет именно Joomla! Access Control Plugin.

Как использовать Joomla! Access Control Plugin?

  • ACO (Access Control Object) – поддержка контроля доступом (операции, которые доступные или недоступные в пределах Компонента);
  • ARO (Access Request Objects) – поддержка контроля запросов (Ваши Пользователи);
  • AXO (Access eXtension Objects) – поддержка контроля доступа к Расширениям.

Первым шагом будет установка плагина через Менеджер Установки. Дальше Вы должны добавить следующие таблицы в базу данных:

  • #__acl_acos
  • #__acl_aro_groups
  • #__acl_aro_groups_acos_map
  • #__acl_aros_aro_groups_map
  • В данный момент, отсутствует графический интерфейс, чтобы можно было управлять этими таблицами, таким образом Вы должны работать с базой данных вручную Joomla не предоставляет возможность выполнять SQL-запросы, таким образом необходимо их выполнить вручную. Для этого можете использовать этот исходный SQL-Файл (prof3taacl.sql.txt), который необходимо переименовать в расширение .sql. Или Вы можете, используя MyPHPAdmin и выполнить следующий запрос:

    DROP TABLE IF EXISTS `#__acl_aro_groups_acos_map`;
    DROP TABLE IF EXISTS `#__acl_aros_aro_groups_map`;
    DROP TABLE IF EXISTS `#__acl_aro_groups`;
    DROP TABLE IF EXISTS `#__acl_acos`;
     
    CREATE TABLE IF NOT EXISTS `#__acl_acos` (
      `id` int(11) NOT NULL auto_increment,
      `axo_id` int(11) NOT NULL,
      `aco_name` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`),
      KEY `axo_id` (`axo_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    CREATE TABLE IF NOT EXISTS `#__acl_aro_groups` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    CREATE TABLE IF NOT EXISTS `#__acl_aro_groups_acos_map` (
      `aro_group_id` int(11) NOT NULL,
      `aco_id` int(11) NOT NULL,
      KEY `aro_group_id` (`aro_group_id`),
      KEY `aco_id` (`aco_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
     
    CREATE TABLE IF NOT EXISTS `#__acl_aros_aro_groups_map` (
      `aro_id` int(11) NOT NULL,
      `aro_group_id` int(11) NOT NULL,
      KEY `aro_id` (`aro_id`),
      KEY `aro_group_id` (`aro_group_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    Первая таблица (#__acl_acos) содержит так называемый ACO (см. спецификацию). Таблица создана таким образом:

     
    id   |  axo_id   |  aco_name
    ---------------------------
    1    |  37       |  giveGrade
    2    |  37       |  receiveGrade

    где

    • id – ACO индификатор;
    • axo_id – component_id компонента;
    • aco_name – символическое название для действия, которое Пользователь может выполнить в пределах Компонента.
      • Следующая таблица (* __ acl_aro_groups) представляет группы Пользователей. Таблица создана таким образом:

        id   |  name
        -------------------
        1    |  студенты
        2    |  преподаватели

        Третья таблица (* __ acl_aro_groups_acos_map) содержит все соотношения между группами ARO и ACO. Таблица создана таким образом:

        aro_group_id   |   aco_id
        ---------------------------
        1              |   1
        1              |   1

        В данном случае, студенты могут получить оценку, а преподаватели могут выставить ее.

        Последняя таблица (* __ acl_aros_aro_groups_map) содержит все соотношения, между ARO (Joomla! зарегистрированными Пользователями) и их группами ARO. Таблица создана таким образом:

        aro_id   |   aro_group_id
        ---------------------------
        65       |   1
        66       |   2

        Где 65 - зарегистрированный студент, а 66 - зарегистрированный преподаватель.

        Теперь необходимо заполнить таблицы в соответствии с Вашими требованиями.

        Если Вы хотите руководить доступом для одного или больше компонентов, Вы можете использовать следующую функцию:

        $mainframe->triggerEvent( 'onAccessingSafeComponent', array($userId, $acoId));

        пример использования этой функции:

        <?php
         
        $user =& JFactory::getUser();
        $userId = $user->id;
         
        // Import the user plugin group
        JPluginHelper::importPlugin('user');
         
        // Let's fire the onAccessingSafeComponent event
        $canGiveGrades = $mainframe->triggerEvent( 'onAccessingSafeComponent',
        array($userId, '1'));
         
        if ($canGiveGrades[0] == '1'){
          // CODE TO GIVE GRADES GOES HERE
        }
         
        ?>

        Домашняя страница проекта

        Домашняя страница плагина Joomla! Access Control Plugin : Prof3ta.netsons.org.


        Загрузить Joomla! Access Control Plugin

        Скачать Joomla! Access Control Plugin

 
< Пред.   След. >
Загрузить Joomla!® CMS