Создать группу пользователей в ручную Часть 1 Печать
Автор: Administrator   
23.10.2010 15:42


Как вы все знаете в Joomla имеются определенные группы пользователей, которым заранее разрешены некоторые действия и выставлены права на использование различных функций сайта. Но не всегда этих групп достаточно, т.к. вам может потребоваться группа имеющая специфические права. Самым распространенным выходом из этой ситуации является использование хака для Joomla – JACLPlus, но это не всегда уместно.

Некоторое время назад, я столкнулся с данной проблемой, и в этой статье я хочу поделится информацией как я ее решил.

Итак, нам нужно создать новую группу пользователей, в которой выставлены такие права:

 

  1. Есть доступ к админпанели.
  2. Имеется доступ к определенному компоненту (в нашем случае будет рассмотрен компонент Remository)
  3. Запрещенный доступ к остальным разделам панели администратора Joomla.

Очевидно, что самая схожая группа пользователей с заданными критериями – это Manager, т.к. этой группе разрешен доступ к админпанели Joomla, и запрещен доступ к большей части функций администрирования, таких как: управление расширениями, пользователями и тому подобное. Чего же в ней не достает? По сути, остается дело за малым:

  1. Добавить доступ к компоненту Remository.
  2. Убрать доступ пользователей к медиа менеджеру, материалам и меню.

Чтобы исправить эти недостатки можно пойти несколькими путями: поменять права группы Manager, либо создать новую группу, схожую отчасти с ней, немного порезав права пользователям. Первую задачу решить очень просто, но ее не столь интересно реализовывать. Эта тема уже не раз подымалась на форуме, ее решения не проблематично отыскать. Я же поведаю вам о том, как создать новую группу пользователей с нужными нам правами, чтобы решить нашу задачу.

Как, собственно, и при всех действиях при редактировании файлов, на всякий случай нужно создать резервную копию файлов которые мы будем изменять, а также базы данных. Это действия в дальнейшем позволяет нам восстановить в случае надобности прежнее состояние сайта.

Создание новой группы пользователей Joomla. На данный момент мы имеем такую информацию о иерархии пользователей Joomla:

ROOT
| - USERS
| -- PublicFrontend
| - - - Registered
| - - - - Author
| - - - - - Editor
| - - - - - - Publisher
| - - Public Backend
| - - - Manager
| - - - - Administrator
| - - - - - Super Administrator

Теперь нам нужно добавить нашу группу пользователей, пусть она будет называться «DownloadsManager», которая будет дочерней для группы Public Backend, теперь наше древо принимает вид:

ROOT
| - USERS
| -- PublicFrontend
| - - - Registered
| - - - - Author
| - - - - - Editor
| - - - - - - Publisher
| - - Public Backend
| - - - Manager
| - - - - Administrator
| - - - - - Super Administrator
| - - - DownloadsManager

Эту информацию (о группах пользователей) и их иерархию вы можете найти посмотрев таблицу jos_core_acl_aro_groups. Сейчас я не буду глубоко вдаваться во все подробности по технической реализации содержания данной таблицы, обойдемся и готовым SQL-запросом, с помощью которой мы сможем создать нужную нам группу:

SET @parent_name = 'Public Backend';
SET @new_name = 'DownloadsManager';
 
SELECT @ins_id := group_id, @ins_lft := lft, @ins_rgt := rgt
FROM jos_core_acl_aro_groups
WHERE name = @parent_name;
 
SELECT @new_id := MAX(group_id) + 1 FROM jos_core_acl_aro_groups;
 
UPDATE jos_core_acl_aro_groups SET rgt=rgt+2 WHERE rgt>=@ins_rgt;
UPDATE jos_core_acl_aro_groups SET lft=lft+2 WHERE lft>@ins_rgt;
 
INSERT INTO jos_core_acl_aro_groups (group_id,parent_id,name,lft,rgt)
VALUES (@new_id,@ins_id,@new_name,@ins_rgt,@ins_rgt+1);



Обновлено 01.12.2015 19:20