Пакет Laravel для генерации и валидации OTP токенов

В этом посте я покажу, как сгенерировать и проверить OTP (одноразовый пароль) с помощью простого пакета Laravel. 

Итак, давайте начнем и выполним следующие три простых шага.

  1. Сгенерируем OTP, используя любую уникальную идентификацию (предпочтительно номер мобильного телефона или адрес электронной почты),
  2. Отправим конечному пользователю с помощью любого поставщика уведомлений
  3. Наконец, проверим, используя ту же уникальную идентификацию.

Процесс установки и настройки :

Установка

Устанавливаем пакет через composer:

composer require seshac/otp-generator

Публикуем и запускаем миграции:

php artisan vendor:publish --provider="Seshac\Otp\OtpServiceProvider" --tag="migrations"
php artisan migrate

Публикуем конфигурационный файл:

php artisan vendor:publish --provider="Seshac\Otp\OtpServiceProvider" --tag="config"

После публикации настраиваем config/otp-generator.php

Использование

use Seshac\Otp\Otp;

$otp =  Otp::generate($identifier);

$verify = Otp::validate($identifier, $otp->token);
// response
{
  "status": true
  "message": "OTP is valid"
}

Помимо преднастроенных значений в конфигурационном файле, мы можем управлять настройками пакета в реальном времени.

use Seshac\Otp\Otp;

$otp =  Otp::setValidity(30)  // время жизни токена otp в мин
      ->setLength(4)  // длина токена
      ->setMaximumOtpsAllowed(10) // сколько раз можно перегенерировать токен
      ->setOnlyDigits(false)  // нужно ли генерировать токен буквенно цифровой
      ->setUseSameToken(true) // при регенерации токена создавать совершенно новый
      ->generate($identifier);

$verify = Otp::setAllowedAttempts(10) // кол-во неправильных попыток ввода
    ->validate($identifier, $otp->token);

Вот репозиторий GitHub https://github.com/seshac/otp-generator

Если обнаружите какие-либо проблемы, пожалуйста, не стесняйтесь открыть проблему здесь.
https://github.com/seshac/otp-generator/issues

Рейтинг
( Пока оценок нет )
Максим Гречушников/ автор статьи
Мне 40 лет, и больше половины жизни я занимаюсь разработкой. За это время я работал с корпоративными системами, highload-проектами, интеграциями, платежными решениями, внутренними платформами и legacy-кодом, который пережил не одного разработчика. Некоторые системы, кажется, переживут и нас. Моя специализация — PHP, Laravel, backend-архитектура, DDD, тестирование, рефакторинг и техническое лидерство. Мне интересны задачи, где нужно соединить код, бизнес, данные, процессы и здравый смысл. Последние годы я много работаю с LLM и AI-инструментами: использую их для проектирования, анализа кода, документации, тестов, ревью, работы с legacy и построения инженерных процессов. Для меня LLM — это не замена разработчику, а усилитель для тех, кто умеет думать системно. В блоге я пишу о Laravel, PHP, архитектуре, тестировании, инженерной практике, управлении разработкой и реальном применении AI в работе программиста.
Понравилась статья? Поделиться с друзьями: