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

После того, как выполните этот запрос, в список доступных групп пользователей будет внесена группа DownloadsManager. Но если вы в менеджере пользователей попробуете создать пользователя с данной группы, то гарантировано получите ошибку: : «You cannot create a user with this user Group level, only Super Administrators have this ability». Это значит, что вы не можете создать пользователя данной группы, т.к. она не является дочерней к группе данного пользователя. Данное ограничение сделали для того, чтобы администраторы не создавали суперадминистраторов, что вполне логично.

В данном примере, группа DownloadsManager, которую мы создали, не выступает дочерней для суперадминистраторов, это означает что мы не сожжем создать пользователей этой группы. Чтобы решить данную проблему, нам нужно сделать некоторые поправки, которые не повлияют на безопасность вашего сайта:

  1. Находим и открываем файл «/administrator/components/com_user/admin.user.php».
  2. Ищем строку
if (!in_array($row->gid,getGIDSChildren($my->gid))) {

и меняем ее на эту:

if ($my->gid != 25 && !in_array($row->gid,getGIDSChildren($my->gid))) {

Это позволяет пользователям группы суперадминистраторов создавать пользователей для всех групп.

Но это только половина того что нам необходимо. Теперь нам потребуется настроить права для данной группы: разрешить авторизацию в админпанели Joomla, открыть доступ к компоненту Remository, включить запрет на доступ к контенту сайта.

Открываем доступ в админпанель Joomla

Права для групп пользователей находятся в файле «/includes/gacl.class.php». Теперь, чтобы дать доступ к авторизации в админпанели нашей группе, необходимо добавить еще одну строку после этой:

$this->_mos_add_acl( 'administration', 'login', 'users', 'manager', null, null );

добавлять эту строку:

$this->_mos_add_acl( 'administration', 'login', 'users', 'downloadsmanager', null, null );

Теперь пользователи нашей группы смогут без помех авторизоваться в админпанели Joomla, и их права почти идентичны с правами группы Manager. Теперь остается только разрешить им доступ к компоненту Remository нашего сайта, а также запретить редактировать материалы.

Открываем доступ к компоненту Remository

Теперь, чтобы разрешить доступ к компоненту нужно чтобы пользователи группы имели доступ к Компонентам и доступ к самому, выбранному нами компоненту Remository.

Сначала давайте добавим права для доступа к компоненту. Для этого нам необходимо отредактировать файл «/includes/gacl.class.php». В нем находим строку:

$this->_mos_add_acl( 'administration', 'edit', 'users', 'manager', 'components', 'com_media' );

и после нее добавляем следующую:

$this->_mos_add_acl( 'administration', 'edit', 'users', 'downloadsmanager', 'components', 'com_remository' );

Теперь пользователи группы DownloadsManager имеют доступ к компоненту Remository, остается только заняться доступом к разделу Компоненты в главном меню административной панели сайта.

Разрешаем пользователям видеть меню админпанели Joomla

Главное меню в админпанели Joomla выводится с помощью модуля mod_fullmenu, который находится в папке /administrator/modules. Нам нужно отредактировать этот файл, чтобы пользователям с правами были видны пункты меню.

Итак, открываем файл /administrator/modules/mod_fullmenu.php в текстовом редакторе, и находим строки:

$canManageUsers = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_users' );



и добавляем после нее:

$canEditRemository = $acl->acl_check( 'administration', 'edit', 'users', $usertype, 'components', 'com_remository' );

$canEditContent = $acl->acl_check( 'administration', 'edit', 'users', $usertype, 'components', 'com_content' );

$canEditMenus = $acl->acl_check( 'administration', 'edit', 'users', $usertype, 'components', 'com_menus' );

после них идет строка:

if ($installComponents) {

меняем ее на:

if ($installComponents || $canEditRemository) {

теперь после строки:

// Content Sub-Menu

вставляем эту:

if ($canEditContent) {

и немного ниже, перед строкой:

// Components Sub-Menu

вставляем:

}

Теперь, можно отключить отображение в меню пункта Медиа-менеджер. Для этого заменяем строку:

['<img src="/../includes/js/ThemeOffice/media.png" />','Media Manager','index2.php?option=com_media',null,'Manage Media Files'],

на эту:

<?php if ($canEditMenus) { ?>

['<img src="/../includes/js/ThemeOffice/media.png" />','Media Manager','index2.php?option=com_media',null,'Manage Media Files'],

<?php } ?>

Для того, чтобы скрыть несколько ненужных нам пунктов меню, мы сделаем еще несколько модификаций этого модуля. Находим строку:

$manageMenuMan = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_menumanager' );

и после нее добавляем:

$manageMenu = $acl->acl_check( 'administration', 'manage', 'users', $usertype, 'components', 'com_menus' );

Mmorpg игры это только самые качественные и лучшие игры которые только были созданы, и все mmorpg игры бесплатно находятся на одном сайте.
Обновлено 01.08.2011 14:17