Масштабные изменения в авторизации

Продолжаем знакомить вас с нововведениями, которые официально выйдут уже 21 ноября.
В репозиториях Фреймворка и Shop-Script на GitHub опубликованы очередные релиз-кандидаты. Помимо исправлений ошибок о которых вы сообщаете (за это спасибо) появилась обновлённая авторизация.
В этой теме расскажем о том что поменялось, как это работает и как встраивать в темы дизайна.
Телефон для регистрации и входа
Функция регистрации и авторизации пользователей Shop-Script 8 с помощью мобильного телефона — важное в этом обновления. Чтобы это заработало — требуется поработать в приложении "Настройки". В разделе "SMS-провайдеры" необходимо настроить доступ для выполнения запросов к вашему оператору SMS-сообщений. Далее создайте группу SMS-шаблонов.

Настройки авторизации в бекенд
После создания Email- и SMS-шаблонов — используйте их для разных форм авторизации. Настройки входа в бекенд задаются в приложении Настройки. Для авторизации допускается использование электронной почты или номера мобильного телефона. Или оба варианта.

Интерфейс настроек авторизации в бекенд.
В обновлённой форме входа в бекенд и oauth авторизации на мобильных устройствах больше не используется jQuery Mobile. Вместо этого мы адаптировали основной шаблон под все размеры экранов.

Настройки авторизации и регистрации во фронтенде
Настройки входа и регистрации во фронтенде задаются в приложении Сайт, отдельно для каждого подключённого домена.

Обновлённый экран настроек входа и регистрации в приложении Сайт.
Встраивание в темы дизайна
Методы встраивания обновлённых форм авторизации, регистрации и восстановления пароля в темы дизайна обратно совместимы.
Раньше разработчики вызывали иконки социальных сетей отдельным smarty-хелпером. Теперь достаточно передать параметр в основной хелпер.
// Авторизация {$wa->loginForm($error, [ 'show_title' => true, 'show_sub_title' => true, 'show_oauth_adapters' => true ])} // Регистрация {$wa->signupForm($errors, [ "show_title" => true, "show_oauth_adapters" => true ])} // Восстановление пароля {if !empty($set_password)} {$wa->setPasswordForm($error, [ 'show_title' => true ])} {else} {$wa->forgotPasswordForm($error, [ 'show_title' => true ])} {/if}
Внешний вид иконок обновлён.

Диалог обновлённых форм с сервером происходит в формате json. Это позволит разработчикам приложений встраивать формы, например, в диалоги.
По мере взаимодействия пользователя с формой можно получить следующие JavaScript события:
- wa_auth_form_loaded: форма авторизации полностью загрузилась.
- wa_auth_form_change_view: DOM формы изменился (показались ошибки, появилось поле для ввода кода и т.д.)
- wa_auth_contact_logged: контакт авторизован. В параметрах передаётся объект contact с полями — id, name, userpic_20.
- wa_auth_set_password: событие сообщающее о возможности перехода на форму setpassword. В параметрах передаётся строка hash — значение имеет ограниченное время жизни, необходим для установки нового пароля. Без валидного хеша форма setpassword вернёт 404 ошибку.
- wa_auth_reset_password: новый пароль успешно установлен.
- wa_auth_resent_password: пароль успешно отправлен пользователю.
- wa_auth_contact_signed: контакт успешно зарегистрирован. В параметрах передаётся {Bool} password_sent — сообщает был ли отправлен пароль пользователю (режим генерации пароля) и объект contact с полями — id, name, userpic_20. Может иметь тип undefined. В этом случае считается ошибкой.
Добрый день. Меня немного смущает надпись в теме Default, в файле login.html
Что там с совместимостью-то?
Хотелось бы видеть возможность отключения дефолтных стилей в формах, почему бы не сделать так:
иначе опять придется городить CSS через important.
Гибкость вроде есть (JSON request), но опять на пол пути
Алексей, обратная совместимость с предыдущими версиями Shop-Script сохранилась. При этом авторизация через мобильный телефон доступна только в Shop-Script 8.
Евгений, добавили параметр include_css.
Дмитрий, данная настройка не работает в шаблоне signup.html
Евгений, поправили. Выйдет в сегодняшнем релизе.
Цифровой логин типа "12345" всё еще считается телефоном?
А на самом деле так:
Просто дополнил информацию.
Здравствуйте, а покажите пожалуйста пример кода?
Почему то у меня это событие ни как не отлавливается в js.