Joomla Portfolio/Catalog 2.0

Разработчик 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.Разработчик 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 – 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
}

?>

Забрать с сервера