Автологин при регистрации в MODX
Регистрация пользователя и схема активации, которая используется по-умолчанию в компоненте Register дополнения Login для MODX является полезной для многих приложений, которым нужна функция регистрации, в то же время есть случаи, когда вы не хотите, чтобы пользователь отвекался от некоторого задания, частью которого может быть данная регистрация…
Следуя моему предыдущему посту о построении сайта электронной комерции на MODx Revolution, я просто хотел добавить короткий пост для демонстрации как легко автоматически входить пользователю/покупателю после того, как он зарегистрировался.
Вы можете видеть из документации дополнения Login, что для того, чтобы обеспечить возможность регистрации на фронтэнде нашего сайта мы должны просто включить сниппет Register в нашу страницу вместе с формой регистрации. По-умолчанию сниппет Register нужно, чтобы пользователь/покупатель «активировал» свой аккаунт нажатием на ссылку в отосланном сниппетом письме. Письмо отсылается по указанному в форме адресу после заполения самой формы и нажатия кнопки подтверждения. Эта ссылка подтверждения, которая остаётся активной в продолжение небольшого времени, является нашей гарантией того, что наш пользователь отправил верный и существующий адрес почты.
Мы можем пропустить этот шаг активации, используя «активационный» параметр и устанавливая его в 0, таким образом наш вызов сниппета будет выглядеть как:
Теперь у нас есть пользователь, который зарегистрирован и активирован, но не вошёл. Мы могли бы использовать параметр &submittedResourceID, чтобы перенаправить пользователя к нашей логин странице, НО в потоке коммерческого приложения, где вы пытаетесь направить людей к корзине как можно проще, есть смысл сделать для них автоматический вход и иметь сниппет, который переведёт их сразу же после регистрации на страницу корзины. К нашему счастью, мы легко можем это сделать с помощью параметра &postHooks в нашем вызове Register. Сниппеты, указанные в параметре postHooks, вызываются после того, как пользоваль зарегистрировался, но перед тем, как он перенаправлен на ресурс указанный в параметре submittedResourceID. Нам всего лиш нужно написать сниппет автоматического входа пользователя.
Давайте назовём наш сниппет register-auto-login. Вызов нашего сниппета Register будет теперь выглядеть как:
Наиболее простое использование нашего сниппета register-auto-login будет:
В рабочем коде вы должно быть захотите проверить ответ, который вы получите от вызова runProcessor, чтобы удостоверится, что логин был успешным – используйте $response->isError для этого и возможно редирект к вашему логин ресурсу в нежелательном сценарии, когда автологин не срабатывает. При удачном логине мы можем использовать как преимущество параметр submittedResourceID для редиректа к нашей странице корзины и сразу же иметь детали пользователя под рукой, используя компонент Profile дополнения Login.
Вот и всё. Теперь мы имеем верное направление нашего покупателя после регистрации к корзине. Конечно же мы должны принести в жертву знание того, что пользователь использовал существующий адрес почты, но для чего кому бы то ни было сообщать фальшивый адрес почты в своём заказе и действительно доступ к котором потом будет иметь смысл. Надеюсь данный пост был полезен некоторым из вас. Жду ваших думчивых и конструктивных отзывов внизу в виде комментариев как всегда
27-10-2011 приёмы MODx Revolution Registration Login сниппеты Виктор Матушевский
Munk
08.11.2011 13:40Вы, случайно не подскажете как это реализовать в Evo? Моих знаний php не хватает чтобы реализовать самому. Гугл ничего конкретного не находит за исключением http://forums.modx.com/thread/43980/how-to-automatically-login-a-web-user-after-registration
Но как использовать эту функцию непонятно..
Viktorminator
08.11.2011 13:45Нет. К сожалению, в Эво я не разбираюсь.
Sparrow
28.03.2012 14:43Отличная статья! Очень помогла. Пока только изучаю MODx и погружаюсь все глубже :)) Может натолкнете на правильную мысль, хотелось бы дополнить этот автологин распознованием пользователя по правам доступа, и соответственно отсылать после логина каждого на свою страницу, мембера на id=19, субадмина на id=23 скажем.
Sparrow
29.03.2012 12:04Понимаю что тут про регистрацию, а не про логин, но раз уж влез, не могу не поделиться :))) Великий и могутный интернет помог. Итак, если нам надо, что бы при логине/регистрации пользователь видел на странице только тот контент который мы хотим ему показать, на помощь приходит BobRay и его сниппет: http://forums.modx.com/thread/18807/change-the-contents-of-a-page-based-on-a-group-of-users#dis-post-408830
Ну и создать каждой группе свой чанк
И пользователей с группами :)))
Георгий Малинка
16.11.2012 19:25Не работает. Выводит в строку то что было забрано хуком.... всё
Viktor Minator
16.11.2012 19:27установили дополнение Profile?
Георгий Малинка
17.11.2012 10:26Черт, вырвал из контекста, спасибо. Сейчас попробую
Sergey Smirnov
03.09.2013 16:56Не работает авто-логин. $response->isError содержит NULL. Авто-логина не происходит.
Вот вызов сниппета Register, может, что-то я сделал не так?
Sergey Smirnov
03.09.2013 16:57Почему-то код вызова сниппета не вставился. Но я все делал как в статье написано.