Разработчик 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) – поддержка контроля доступа к Расширениям.
Первым шагом будет установка плагина через Менеджер Установки. Дальше Вы должны добавить следующие таблицы в базу данных:
В данный момент, отсутствует графический интерфейс, чтобы можно было управлять этими таблицами, таким образом Вы должны работать с базой данных вручную 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 – ACO индификатор; - axo_id – component_id компонента; - aco_name – символическое название для действия, которое Пользователь может выполнить в пределах Компонента.
Следующая таблица (* __ acl_aro_groups) представляет группы Пользователей. Таблица создана таким образом:
id | name ------------------- 1 | студенты 2 | преподаватели
Третья таблица (* __ acl_aro_groups_acos_map) содержит все соотношения между группами ARO и ACO. Таблица создана таким образом:
В данном случае, студенты могут получить оценку, а преподаватели могут выставить ее.
Последняя таблица (* __ acl_aros_aro_groups_map) содержит все соотношения, между ARO (Joomla! зарегистрированными Пользователями) и их группами ARO. Таблица создана таким образом: