Маскировка админки
Всем привет! В этой заметке я расскажу про очередной велосипед о том, как замаскировать вход в админку MODX. Первый свой вариант я реализовал в модуле AdminTools. Там для авторизации пользователя в бэкэнд используется адрес web-ресурса с формой с одним полем, в которое нужно ввести логин или email. MODX по введённым данным попробует найти пользователя и, если найдёт, то на указанный email вышлет ссылку для авторизации. Т.е. адрес админки не светится и пароли помнить не нужно. Главное, чтобы указанный пользователь был в базе, у него были права на вход в админку и настроенный email.
А в этом варианте я предлагаю скрывать админку с использованием GET параметра. Для реализации этого решения нужно создать плагин на событие OnManagerPageInit.
<?php switch ($modx->event->name) { case 'OnManagerPageInit': // Вариант 1. Сразу задать значение GET параметра. $code = 2016; // Вариант 2. Создать системную настройку adminCode и в ней выставить значение // $code = $modx->getOption('adminCode'); // Тут мы проверяем GET параметр code if ($modx->user->id == 0 && (!isset($_GET['code']) || $_GET['code'] != $code)) { // Определяем заголовок страницы и тело. Можно оставить значения по-умолчанию. // Тогда $options можно не использовать. $options = array( 'error_pagetitle' => 'Ошибка 404: Страница не найдена', 'error_message' => '<h1>Куды прешься</h1><p>Нету тут таких.</p>', ); $modx->sendErrorPage($options); // Можно просто редиректить на какую-нибудь страницу. } break; }
Теперь для того, чтобы попасть на страницу админки, нужно набрать правильный адрес с кодом site.ru/manager/?code=2016
. В противном случае, получите страницу 404.
Ну и помним про обычные способы — базовая аутентификация (т.е. задать пароль на сервере) и переименование папки manager.
Комментарии ()
Вы должны авторизоваться, чтобы оставлять комментарии.
Сначала этого не понял, засунул в Evo — админка покрошилась. Пока не удалил плагин через БД и не почистил кэш — админка не работала.
А можете делать так же, только для Evo? Очень надо, пожалуйста!
Случайно нашел. Только переделал немножко.
Код моей версии:
И настройки:
Ну и событие: OnManagerLoginFormPrerender
Отличие моей версии — происходит редирект на страницу 404. Как это прописать кодом в настройках я не знаю, поэтому прописал в коде самого плагина.
Чуть не забыл, доступ к админке по адресу типа:
Или ничего не передавать. Но тогда страницу для ошибки 404 нужно определить в системном параметре «error_page».
но что то не срабатывает. выдает: 503 Error