Joomla! Access Control Plugin

  • 11.02.2008
  • Fon

Разработчик 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 — пожалуй, лучшая система управления контентом с открытым исходным кодом

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

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

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

Расширения Joomla

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

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

Видео