Пишу авторизацию/регистрацию по номеру телефона. Имеется два URL:
/api/request - POST запрос для отправки кода, принимаю только номер телефона, делаю валидацию номер, также ограничиваю на отправку кол-во кодов.
/api/confirm - POST запрос на проверку кода. Вот тут я и попал в тупик. Какие тут должны быть проверки помимо проверки самого кода? Мой вариант реализации такой:
Принимаем номер (мы его знаем) и принимаем код от пользователя. Дальше просто проверяем код и все. Можно также ограничить на попытки спама кодов.
Честно говоря, полная реализация выглядит так себе для обеих УРЛОВ. Может, кто-то писал данную авторизацию, хочу увидеть реализацию или текст как я должен обрабатывать/проверять это.
Прошелся по сайтам где регистрация по номеру и там при отправки кода/проверки кода передаются какие-то токены. Судя по всему, токены создаются при заходе на сайт и все.
Мой код:
const { parsePhoneNumberFromString } = require('libphonenumber-js');
const isValidPhoneNumber = (phone, country) => {
const parsePhoneNumber = parsePhoneNumberFromString(phone, country);
if (!parsePhoneNumber || !parsePhoneNumber.isValid()) return null;
return parsePhoneNumber;
}
exports.requestController = (req, res) => {
const { phone } = req.body;
const formattedNumber = isValidPhoneNumber(phone);
if (!phone || !formattedNumber) {
return res.status(400).json({
message: 'Incorrect number'
})
}
return res.status(200).json(formattedNumber.formatInternational())
}
exports.confirmController = (req, res) => {
const { phone, code } = req.body;
res.json({ message: 'confirm code' })
}