[ajaxLogin] Регистрация, Авторизация, Сброс пароля

Компонент ajaxLogin для MODX revolution реализует регистрацию, авторизацию и сброс пароля на сайте через AJAX, содержит в себе один сниппет и кучу чанков. Обязательно должен быть установлен пакет Login, автоматическая загрузка, пока, не реализована. Из пакета Login работает только с тремя сниппетами, это: Login, Register и ForgotPassword.

Все действия происходят в модальном окне, по умолчанию bootstrap3




Должна быть подключена библиотека jQuery.

Сниппет ajaxLogin

Как я выше писал, ajaxLogin содержит в себе кучу чанков, которые все служат для переопределения чанков по умолчанию сниппетов пакета Login, кроме двух — ajaxLoginTpl и ajaxLoginModalTpl.
Чанк ajaxLoginTpl разделён на две части сепаратором , и служит для вывода кнопки «Войти» или имени пользователя (fullname), в зависимости от состояния юзера: авторизован/не авторизован, с выпадающим меню-дропдаун (bootstrap), в котором находится ссылка выхода. Можно добавить любые другие ссылки.

Параметры

  • &activationEmailTpl — Чанк письма для подтверждения Email, сниппета Register. По умолчанию: ajaxLoginActivateEmailTpl
  • &activationResourceId — ID ресурса, куда будет перенаправлен пользователь для подтверждения и активации своей почты при регистрации, сниппета Register. По умолчанию: Пусто
  • &emailTpl — Чанк письма с информацией о дальнейших действиях при сбросе пароля, сниппет ForgotPassword. По умолчанию: ajaxLoginForgotPassEmailTpl
  • &errTpl — Шаблон вывода ошибки для сниппетов Login и ForgotPassword. По умолчанию: ajaxLoginErrTpl
  • &frontendCss — Путь до файла со стилями.
  • &frontendJs — Путь до файла со скриптом.
  • &loginTpl — Чанк с формой авторизации для сниппета Login. По умолчанию: ajaxLoginFormTpl
  • &logoutResourceId — ID ресурса, куда пользователь будет перенаправлен при выходе. Если пусто, то текущий ресурс. По умолчанию: Пусто
  • ®isterTpl — Чанк с формой регистрации для сниппета Register. По умолчанию: ajaxLoginRegisterFormTpl
  • &resetResourceId — ID ресурса, куда будет перенаправлен пользователь для сброса пароля по ссылке из почты. По умолчанию: Пусто
  • &sentTpl — Чанк с сообщением, после заказа сброса пароля. По умолчанию: ajaxLoginForgotPassSentTpl
  • &tpl — Чанк с формой восстановления пароля для сниппета ForgotPassword. По умолчанию: ajaxLoginForgotFormTpl
  • &tplAjax — Чанк, разделённый на две части сепаратором. Та или иная часть выводится согласно статуса пользователя — авторизован или нет. По умолчанию: ajaxLoginTpl
  • &tplModal — Чанк оформления модального окна. По умолчанию: ajaxLoginModalTpl
  • &tplType — Значение указывает сниппетам Login и ForgotPassword где находится форма. По умолчанию: embedded. Не рекомендую менять этот параметр.

Примеры

Вот пример кода, которого вполне достаточно для работы этого компонента:
[[!ajaxLogin?
	&resetResourceId = `87`
        &emailSubject = `Заказан сброс пароля`
        &usergroups = `Users::Member`
        &activationEmailSubject = `Спасибо за регистрацию!`
        &activationResourceId = `84`
        &successMsg = `На указанный Email мы отправили ссылку, по которой нужно перейти для подтверждения почты.`
]]
Как вы понимаете, должны быть созданы ресурсы для сброса пароля и подтверждения Email, с соответствующими вызовами сниппетов: ResetPassword и ConfirmRegister

Компонент в modstore.
Марат Марабар
03 декабря 2016, 11:26
modx.pro
8
9 045
+13
Поблагодарить автора Отправить деньги

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

Василий Столейков
03 декабря 2016, 16:05
1
0
Круто!
А где найти сам компонент-то? В статье об этом ни слова…
DimenSi
03 декабря 2016, 21:27
0
Эх, этот jQuery… ничего против него не имею, но когда сделал простейший лендинг в котором вообще не использовал его, но для формы понадобился jquery, так обломался..., пришлось цеплять 100кб штуку, чтоб заюзать ajaxForm. Спасибо за работу.
    Андрей Степаненко
    03 декабря 2016, 21:54
    +2
    Давайте тогда технологиями первого компьютеоа в 80-х пользоватся. Не подключать дополнительных строк на ода которые убрать шаги такие как пеиезагиузка страницы, ответ если не правильно введен пароль, ответ если не правильно введен логин. Давайтк перезагружать страницу при любом событии. Вишка то в том что подгрузка 100 кб кода дает в результатте минус 4 минимум перезагрузок страниц. Причем есть элемент когда пользовател. Вообще не обратит внимание когда страница должна была перезагрузится 10 раз. Вороде как програмисты и работают ради того чтобы не повторять шаги.
      Руслан Кундиус
      03 декабря 2016, 22:38
      0
      Для ajax запросов jquery не нужен. Впрочем, никто не мешает подключить свой скрипт для ajaxForm.
    Bluetenstadt
    05 декабря 2016, 23:19
    0
    подстажите как в чанке ajaxLoginTpl сделать ссылку на главную при logout?
    <a href="[[~2? &service=`logout`]]">Logout</a>
    id 2 это главная, вместо перехода на неё просто остаётся на странице ( logout выполняется).
      Марат Марабар
      05 декабря 2016, 23:37
      +1
      Изменить параметр &logoutResourceId, по умолчанию — текущий ресурс, в вызове сниппета ajaxLogin:
      [[!ajaxLogin?
      	....
      	....
      	&logoutResourceId = `2`
      ]]
      Должен сработать.
        Bluetenstadt
        05 декабря 2016, 23:42
        0
        сработало спасибо!
          Bluetenstadt
          09 декабря 2016, 12:59
          0
          а перенаправление при удачном входе как сделать?
            Марат Марабар
            09 декабря 2016, 23:21
            0
            Ну видимо так:
            [[!ajaxLogin?
            	....
            	....
            	&oginResourceId = `123`
            ]]

              Bluetenstadt
              10 декабря 2016, 14:18
              0
              в этом то и грабли, что так не работает
                Марат Марабар
                13 декабря 2016, 15:55
                +1
                Нужно обновиться — исправил.
                  Bluetenstadt
                  13 декабря 2016, 18:45
                  0
                  Отлично, спасибо.

                  Ток предупреждайте, что чанки перезаписываются, спасибо.
        Александр
        19 декабря 2016, 11:26
        0
        День добрый!
        Небольшая проблемка при работе по https. Так и не обнаружил откуда ноги ростут. В процессе.

        При авторизации в хроме в консоль кидает:

        Mixed Content: The page at 'https://site.name/page/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://site.name/page/'. This request has been blocked; the content must be served over HTTPS.
        Обновления страницы не происходит. Авторизация однако совершается (только f5 надо жмякнуть). Откуда может он брать http?

        * ps: в link_tag_scheme = 1

        Пока писал, заметил, что видимо дело в $_SERVER['HTTPS'] ибо оно не в on. Буду разбираться.
          Александр
          19 декабря 2016, 11:48
          +1
          Да, так как в конце и предположил ) Сервер слегка был «неполноценно настроен». Оживил $_SERVER['HTTPS'] и всё отлично.
          Благодарю за компонент. Пригодится.
          Дмитрий
          19 ноября 2018, 10:20
          0
          Можно ли как-то вызвать отдельно форму авторизации и регистрации?
            Дмитрий
            02 сентября 2019, 23:19
            0
            Кто-нибудь разобрался как вызвать отдельно форму авторизации и регистрации? И, главное, в нужном мне месте. Купил этот сниппет, а он мне 3 формы в самом низу сайта вывел и всё. Не могу даже перенести их в заранее подготовленное модальное окно.
              Валентин
              29 ноября 2019, 18:29
              0
              Купил данный модуль на modstore, впринципе все устраивает, кроме 1: можно ли авторизоваться сразу в нескольких контекстах? (у меня языковые версии по поддоменам разбиты)
              И очень скудно описан функционал, но с горем на пополам — разобрался
                Андрей
                29 ноября 2019, 23:34
                0
                У Login есть параметр contexts, описан как экспериментальный:
                (Experimental) A comma-separated list of contexts to log in to. Defaults to the current context if not explicitly set.
                Нужно проверять будет он работать или нет.
                  Добрый день.
                  Удалось ли Вам реализовать авторизацию в разных контекстах?
                  Компонент более недоступен?
                  И есть ли альтернатива?
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  28