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

Di Elshin

Продолжаем знакомить вас с нововведениями, которые официально выйдут уже 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. В этом случае считается ошибкой.
12 ноября 2018
  • Добрый день. Меня немного смущает надпись в теме Default, в файле login.html

    {* TODO: Make backward compatibility with SS 7 *}
    {* {$wa->loginForm($error, empty($without_form))} *}

    Что там с совместимостью-то?

  • Евгений 14 ноября 2018 11:10

    Хотелось бы видеть возможность отключения дефолтных стилей в формах, почему бы не сделать так:

    {$wa->loginForm($error, [
        'style' => false,
    ])}
    

    иначе опять придется городить CSS через important.

    Гибкость вроде есть (JSON request), но опять на пол пути


  • Di Elshin 14 ноября 2018 19:07

    Алексей, обратная совместимость с предыдущими версиями Shop-Script сохранилась. При этом авторизация через мобильный телефон доступна только в Shop-Script 8.

    Евгений, добавили параметр include_css.

  • Евгений 25 ноября 2018 14:31

    Дмитрий, данная настройка не работает в шаблоне signup.html

  • Di Elshin 27 ноября 2018 12:28

    Евгений, поправили. Выйдет в сегодняшнем релизе.

  • Syrnik.com 27 ноября 2018 17:28

    Цифровой логин типа "12345" всё еще считается телефоном?

  • Евгений Леман 8 октября 2019 14:49

    wa_auth_contact_logged: контакт авторизован. В параметрах передаётся объект contact с единственным полем — id.

    А на самом деле так:

    Просто дополнил информацию.

  • Денис 29 ноября 2020 12:50


    А на самом деле так: Просто дополнил информацию.

    Здравствуйте, а покажите пожалуйста пример кода?

    Почему то у меня это событие ни как не отлавливается в js.

    document.addEventListener("wa_auth_contact_logged", function(event) {console.log(event);});


Чтобы добавить комментарий, зарегистрируйтесь или войдите