Маскировка админки

Всем привет! В этой заметке я расскажу про очередной велосипед о том, как замаскировать вход в админку 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 параметр codeif($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.