Автологин при регистрации в 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.

Вот и всё. Теперь мы имеем верное направление нашего покупателя после регистрации к корзине. Конечно же мы должны принести в жертву знание того, что пользователь использовал существующий адрес почты, но для чего кому бы то ни было сообщать фальшивый адрес почты в своём заказе и действительно доступ к котором потом будет иметь смысл. Надеюсь данный пост был полезен некоторым из вас. Жду ваших думчивых и конструктивных отзывов внизу в виде комментариев как всегда