AdminTools 1.4.0 Авторизация в админке через email

В новой версии можно авторизоваться в админке просто указав имя пользователя или email. На почту придет ссылка, кликнув на которую в течение определённого времени произойдет авторизация в админке.


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

Реализовать через ExtJs у меня не получилось, нет никакой возможности подключить свои скрипты на страницу с формой — у контроллера авторизации не работают методы addJavascript() и addCss() (они работают, но их результат не учитывается), а переопределить этот контроллер при загрузке страницы никак — он жёстко прописывается в коде. По крайней мере, я не нашёл такого способа. А менять ядро по понятным причинам не хотелось. Поэтому я решил использовать стандартную возможность MODX — с версии 2.2.0 можно указывать альтернативный адрес формы авторизации. Но чтобы авторизация заработала, нужно выполнить настройку.

Настройка

Для начала нужно её включить в системных настройках, по-умолчанию она выключена. Там же нужно указать id страницы, на которой будет размещаться форма. Лично я создал новую страницу с пустым шаблоном, на которой вызываю сниппет adminLogin, отвечающий за авторизацию.
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=[[++modx_charset]]" />
    <meta name="robots" content="noindex" />
    <base href="[[++site_url]]" />
    <title>[[*pagetitle]]</title>
</head>    
<body>
    [[!adminLogin]]
</body>
</html>
Так получается максимально похоже на админку. Сама форма находится в чанке tpl.login.form.

Как работает

Для авторизации нужно ввести логин или email. Если у пользователя нет прав на админку, то «давай, до свидания». Если права есть, то на указанный или найденный по логину email, будет выслана ссылка. Она будет активна согласно системной настройке authorization_ttl. По-умолчанию, 10 минут. По истечению этого времени она деактивируется. Также как и при авторизации через неё. Второй раз по ней не зайдешь. В общем, я уже пользуюсь, вроде всё ок. Но версия пока бета. Кому такая возможность не нужна, просто не включайте настройку.

Что ещё хотел отметить. Авторизация происходит через стандартный login-процессор, поэтому все события отрабатывают как положено.

Была ещё мысль в целях повышения безопасности сделать email уведомление пользователю при авторизации в админке через его логин, как это сделано в банк-клиентах. Но потом решил, что это уже перебор.
Сергей Шлоков
24 января 2016, 16:00
modx.pro
1
2 436
+7
Поблагодарить автора Отправить деньги

Комментарии: 18

Адиль
26 января 2016, 13:20
0
Сергей на твой modzone.ru ругается веб, че у тебя там?
    Сергей Шлоков
    26 января 2016, 14:04
    0
    Это который доктор? Хрен знает. Почему-то он у них в базе вредоносных сайтов. Почему не понятно. Вот что пишет.

    Вирусов нет, проблем нет, но опасность с большой буквы. Попахивает разводкой. У меня Касперский. У него претензий нет.
      Сергей Шлоков
      27 января 2016, 18:54
      +1
      Написал в техподдержку доктора, сайт удалили из базы вредоносных сайтов. Всё теперь чисто.
        Адиль
        30 января 2016, 00:26
        0
        А что сказали хоть, по какой причине зпнесли в черный тебя?
          Сергей Шлоков
          31 января 2016, 19:49
          0
          Возможно до меня на этом ip был вредоносный сайт.
      @ndrew
      05 февраля 2016, 18:55
      0
      Заметил баг безопасности с AdminTools.
      Если включить в системных настройках авторизацию по емайлу и не указать ID ресурса.
      То войти в админку site.ru/manager можно с любым паролем!!!!!
      Проверял с любых браузеров и даже со смартфона!!!
      Отключаю плагин или в системных настройках отключаю авторизацию по емайлу или указываю id ресурса и все норм.
        Сергей Шлоков
        05 февраля 2016, 20:26
        0
        Поэтому и бета. Исправил. Спасибо.
          Федор
          26 апреля 2016, 06:20
          0
          Здравствуйте, Сергей! Один вопрос, то есть этот способ нужен, если самостоятельно зарегистрировать менеджера с правами на бэкэнд и дать ссылку на страницу авторизации по мейлу? То есть пароль запоминать не обязательно а ему его вообще знать не нужно? И как быть с авторизацией по /manager, есть менеджеры которую ее знает и у них заполнены логин пароль… и так же в личном кабинете они могут нажать изменить пароль или сбросить, и на почту прийдет письмо со ссылкой на обычную авторизацию… Или старую можно как-то скрыть и оставить только для себя? Еще один обидный момент, этот способ не работает при офлайн сайте, пока идет тест или подбор админов:(+ страница должна быть опубликована
            Сергей Шлоков
            26 апреля 2016, 07:03
            0
            Этот способ работает для всех без исключения! На страницу /manager/ зайти никому не получится — плагин переадресовывает на указанный ресурс. Для авторизации хоть менеджера хоть админа нужно указать логин или email. Если нужно сделать выборочную авторизацию по email, то в плагине можно добавить условие для переадресации (например, принадлежность к какой-либо группе).
            Пароль не имеет значения. Он не учитывается. Авторизация работает только по email. Поэтому адрес должен быть рабочий, а не липовый.
              Федор
              26 апреля 2016, 07:10
              0
              странно, я разлогинился и смог открыть как созданную мною страницу с авторизацией по мейлу, так и просто /manager где нужно ввести логин и пасс, как обычно. 2е- если разлогинится, то снова открывается страница /manager :( Вот при авторизации через мейл на /manager перебрасывает, но так как авторизация прошла я вижу админку, как и должно быть. Собственно поэтому у меня и появились вопросы, если заходить на сайт/manager спокойно открывается старая форма, в тот же момент я могу открыть сайт/avtorizaciya-adminov и предлагает ввести логин и сбросить линк… сбрасывает и на почту приходит… не понимаю, что сделал не так. Сайт включил в онлайн, в настройках вкл функцию авторизации через мейл и указал ресурс (131), страницу опубликовал.
                Сергей Шлоков
                26 апреля 2016, 07:36
                0
                Странно. У меня всё работает — и при разлогинивании и при вводе адреса. На /manager/ зайти невозможно.
                  Федор
                  26 апреля 2016, 07:38
                  0
                  Хм:( странно… то есть у вас, даже при выключенном сайте можно зайти на эту страницу, так как она должна заменять /manager?
                    Сергей Шлоков
                    26 апреля 2016, 07:59
                    0
                    Нет. Сделаю отмену переадресации у выключенного сайта в новой версии.
                      Федор
                      26 апреля 2016, 08:04
                      0
                      не, на выключенном сайте у меня вообще не открывается страница сайт/по-мейлу, вылезает сообщение о недоступности сайта, как на любой другой… работает только сайт/manager. А я думал, что сайт/по-мейлу заменит его, и при выключенном сайте я смогу зарегать 30 контент менеджеров и скинуть ссылку на логин по мейлу, ну и тестить, кто как работает. В любом случае, даже когда все нормально включено и настроено, у меня все равно открывается /manager, как ни в чем не бывало, попробую еще раз вечерком, хорошенько почистив права доступа и кэш сайта, ну и браузер… может поможет
                        Сергей Шлоков
                        26 апреля 2016, 08:26
                        0
                        На выключенном сайте показывается всего одна страница — указанная в настройке site_unavailable_page. Можно указать в ней 131 страницу.
                        А почему не работает переадресация не знаю, нужно смотреть сайт.
                          Федор
                          26 апреля 2016, 08:35
                          0
                          блин, точно! спасибо, думаю разберусь.
                          Федор
                          26 апреля 2016, 09:35
                          0
                          переадресация работает :) При отключенном сайте, указав страницу 131, как site_unavailable_page правда выдает ошибку, когда пишешь логин, «сервис не доступен» но письмо все равно доходит и авторизация проходит)
                          Федор
                          26 апреля 2016, 16:06
                          0
                          наткнулись на неприятный казус, теперь админы не могут фронт энд залогинится :)) у меня оффисс… он просил логин, а говорит что ссылку уже отправляли, ее надо активировать… а я по ней уже в бэкэнде зашел…
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      18