composer require prozorov/data-locker
Библиотека для генерации одноразовых паролей (OTP) состоит из следующих компонентов:
- Локер (Locker) - это основной класс для работы с системой одноразовых паролей (интерфейс библиотеки). Предполагается только работа с этим классом. Все остальные классы в библиотеке являются вспомогательными и прямое взаимодействие приложения с ними не предполагается.
- Репозиторий (Хранилище) - это класс, взаимодействующий с хранилищем (базой данных).
- Конфигурационный класс - это класс, содержащий всю конфигурацию для системы одноразовых паролей.
- Транспортная система - классы, которые будут реализовать доставку сообщений с одноразовым паролем
- Система сообщений - классы сообщений
Сперва нужно создать адаптер для репозитория одноразовых паролей. Репозиторий - это класс, реализующий интерфейс Prozorov\DataVerification\Contracts\CodeRepositoryInterface
.
Далее нужно настроить класс, содержащий настройки для работы библиотеки Prozorov\DataVerification\Configuration
. В конструктор этого класса нужно передать контейнер, совместимый с PSR-11 (Psr\Container\ContainerInterface
) и конфигурационный массив.
Пример конфигурационного массива:
$config = [
'code_repository' => OtpCodeTable::class,
'passwords' => [
'default' => [
'pass_length' => 4,
'creation_code_threshold' => 60,
'limit_per_hour' => 10,
'attempts' => 3,
'password_validation_period' => 3600,
],
],
'transport' => [
'sms' => function () use ($debugCodePath) {
return new DebugTransport($debugCodePath);
},
],
'messages' => [
'sms' => SmsMessage::class,
],
];
Класс-репозиторий для хранения паролей.
Допустимые значения:
- Строка. В случае, если передана строка, библиотека обратится к PSR-11 контейнеру чтобы получить класс. Класс должен реализовывать интерйейс
Prozorov\DataVerification\Contracts\CodeRepositoryInterface
. - Замыкание, возвращающее экземпляр класса, реализующего
Prozorov\DataVerification\Contracts\CodeRepositoryInterface
. Замыкание будет выполнено единоразово, а не каждый раз при запросе репозитория. - Объект, реализующий интерфейс
Prozorov\DataVerification\Contracts\CodeRepositoryInterface
.
Обязательный параметр. Значение по умолчанию: отсутствует.
Длина пароля.
Допустимые значения:
- Число больше 0
Необязательный параметр. Значение по умолчанию: 4.
Время (количество секунд), в течение которого нельзя запросить код повторно на один и тот же адрес.
Допустимые значения:
- Число больше 0
Необязательный параметр. Значение по умолчанию: 60.
Количество попыток, которые можно сделать за час на один и тот же адрес
Допустимые значения:
- Число больше 0.
Необязательный параметр. Значение по умолчанию: 10.
Количество попыток ввода пароля.
Допустимые значения:
- Число больше 0
Необязательный параметр. Значение по умолчанию: 3.
Время (количество секунд) жизни пароля.
Допустимые значения:
- Число больше 0.
Необязательный параметр. Значение по умолчанию: 3600 (1 час).
Настройки системы доставки сообщений
Допустимые значения: массив, ключами которого являются символьные коды метода доставки (например, sms
, email
) а значениями - - Объекты, реализующие интерфейс Prozorov\DataVerification\Contracts\TransportInterface
,
- Строковые названия классов, рализующих интерфейс
Prozorov\DataVerification\Contracts\TransportInterface
, - Замыкания, возвращающие объекты, реализующие интерфейс
Prozorov\DataVerification\Contracts\TransportInterface
.
Настройки сообщений
Допустимые значения: массив, ключами которого являются символьные коды метода доставки (например, sms
, email
) а значениями - - Объекты, наследующиеся от Prozorov\DataVerification\Messages\AbstractMessage
,
- Строковые названия классов, наследующиеся от
Prozorov\DataVerification\Messages\AbstractMessage
, - Замыкания, возвращающие объекты, наследующиеся от
Prozorov\DataVerification\Messages\AbstractMessage
.