Прячем лишнее от менеджеров

Обычно я, когда даю доступ к готовому сайту, то создаю для этого пользователя с ограниченными правами, а пароль администратора даю, если попросят. Каких-то корыстных целей в этом нет, просто со стороны пользователя меньше возможностей что-нибудь поломать.
Несколько дней назад возникла проблема: заказчик потыкал в меню и посчитал оскорбительным, что у него нет прав. И действительно, если в Revo лишнее в меню скрывается от менеджера при настройке прав, то в Evo все видно, хоть и не работает. Решение очень простое:

/* 
Events: OnManagerMenuPrerender, OnManagerPageInit
Configuration:

&role=role;text;2 &hide=hide;textarea;user_management_title,
manager_permissions,
role_management_title,
elements,
reports,
bk_manager,
import_site,
export_site,
edit_settings,
new_module,
web_permissions
*/
$e = $modx->event;
$user = $modx->userLoggedIn();
$data = $modx->getUserInfo($user['id']);
if ($e->name == 'OnManagerMenuPrerender') {
	if ($data['role'] == $role) 
		if(isset($hide))
			foreach(explode(',',$hide) as $item) 
				unset($menu[trim($item)]);
	$e->output(serialize($menu));
}
if ($e->name == 'OnManagerPageInit') {
	if ($data['role'] == $role)
		if(isset($_REQUEST['a']) && $_REQUEST['a'] == 106)
			$modx->sendRedirect(MODX_MANAGER_URL.'index.php?a=2');
}

Плагин прячет для роли Editor лишние пункты меню (названия можно посмотреть в файле manager/frames/mainmenu.php), в том числе модуль Extras, и не дает смотреть страницу «Управление модулями». Портит дело только кнопка «Управление элементами» в дереве, ее нормально не удалить — но там и не пишется, что нет прав, так что пусть остается (:

8 комментариев

avatar
давно уже думал как спрятать всё лишнее, от кривых рук горе-менеджеров))
и пошёл другим путём, изменил вывод верхнего меню в файле шаблона по умолчанию в сборке Дмитрия.

листинг файла /manager/media/style/D3X/frames/mainmenu.php к сожалению не влез, из-за ограничения форума, вот ссылка на файл на гитхабе
Комментарий отредактирован 2016-02-09 19:28:39 пользователем 64j
  • 64j
  • +3
avatar
Тоже думал об этом, так и правильнее даже, но лень было возиться.
avatar
я долго ленился, но когда уже достали
— «а это что за кнопка, а это почему не нажимается, а что это за окно, а почему нет доступа, я ничего не могу сделать, откройте мне доступ, я аккуратно...»
и потом когда испортят, ещё и укоряют, мол так легко всё сломать, типа плохо сделано))
avatar
+- тоже самое делаю так:

$e = &$modx->Event;
switch($e->name){
        case 'OnManagerMenuPrerender':
	            if($_SESSION['mgrRole']!=='2') return;
                unset($menu['reports']);
				unset($menu['tools']);
				unset($menu['users']);
	            unset($menu['modules']);
				unset($menu['elements']);
				unset($menu['add_resource']);
				unset($menu['add_weblink']);

                $menu['remove_locks']     = array('remove_locks','site','Удалить блокировки','javascript:removeLocks();','Удалить блокировки','this.blur();','remove_locks','',0,20,'');

                $e->output(serialize($menu));
        break;
}
avatar
avatar
Уже несколько раз заказчик ломал сайт, дал ему полный доступ к админке сайта по его требованию (как хозяину сайта). Потом естественно просит СРОЧНО!!! восстановить всё поломаное, последний раз он сделал рекламную рассылку и потерял доступ к админке, пытаясь сменить пароль почта была указана моя и у него вообще была истерика. Даже написал в службу поддержки MODXCLUB.RU!
avatar
Доброго дня!
Подскажите, а есть ли аналогичное решение под 1.0.15? Понимаю что можно обновить движок, но в данный момент на это нет времени(
avatar
Если там нет события OnManagerMenuPrerender, то никак.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.