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 | 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