Задача довольно срочная (дедлайн вечер 24.10).
Требуется на работающем сайте (WP+Woo) проекте реализовать регистрацию/авторизацию через отправку OTP на email, так же нужно сверстать пользовательскую часть (скрин_1 (https://skr.sh/sSKFBXwPHhO), скрин_2 (https://skr.sh/sSK3uUNOCBY), скрин_3 (https://skr.sh/sSKNkzlP5Uv), скрин_4 (https://skr.sh/sSKrzl8owm2)).
Проверили готовые плагины, типа https://ru.wordpress.org/plugins/otp-login/ , поняли что они не поддерживают регистрацию, а только работают для авторизации с уже зарегистрированными пользователями.
Было принято решение делать вручную, по такому плану:
- генерируем OTP (One Time Password), отправляем на email и пишем OTP в cookie (у cookie время действие ~ 1 мин, если они истекают повторно просим отправить код)
- при вводе кода сопоставляем его с cookie (можно предусмотреть шифронание, во избежание обхода, хотя это наверное не нужно)
- в случае совпадения OTP и введенного кода в инпут, отправляем запрос на подготовленный эндпоинт для регистрации профиля на бекенде (пример (https://wordpress.stackexchange.com/questions/264866/how-to-use-the-wp-rest-api-for-new-user-registration-sign-up-form))
Нюансы:
- если есть ограничения у WP по обязательным полям (логин/имя) просто генерируем рандомное значение типа user1231, которое потом пользователь может сам поменять
- естественно не забыть создавать сессию после регистрации, как для авторизованного пользователя, чтоб не нужно было сразу после регистрации опять авторизироваться (но это из коробки должно работать)