GeneratePhoneCode
array|false public static CUser::GeneratePhoneCode( int $userId );
Метод генерирует одноразовый код подтверждения телефона пользователя. Метод статический.
CUser::GeneratePhoneCode работает с записью пользователя в таблице b_user_phone_auth. Для генерации кода у пользователя должна быть запись телефона с непустым секретом OTP_SECRET.
Метод только создает код и обновляет данные попыток. Отправку SMS выполняет отдельная логика, например CUser::SendPhoneCode.
Параметры вызова
| Параметр | Описание |
|---|---|
| $userId | Идентификатор пользователя. |
Возвращаемое значение
Метод возвращает массив с кодом и номером телефона пользователя:
| Индекс | Описание |
|---|---|
| 0 | Одноразовый код подтверждения. |
| 1 | Номер телефона из записи пользователя. |
Если запись телефона не найдена или в ней нет OTP_SECRET, метод возвращает false.
Особенности работы
При успешной генерации метод сбрасывает счетчик попыток ATTEMPTS в 0 и записывает дату отправки кода в поле DATE_SENT.
Код формируется по алгоритму TOTP с интервалом 30 секунд. Проверяйте код методом CUser::VerifyPhoneCode.
Пример
$userId = 12;
$phoneCode = CUser::GeneratePhoneCode($userId);
if ($phoneCode !== false)
{
[$code, $phoneNumber] = $phoneCode;
// Передайте $code в сервис отправки SMS.
}