Skip to content

Latest commit

 

History

History
135 lines (91 loc) · 7.27 KB

README.md

File metadata and controls

135 lines (91 loc) · 7.27 KB

Data Locker: библиотека для защиты информации одноразовым паролем

Scrutinizer Code Quality Code Coverage Build Status Code Intelligence Status

Установка

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,
    ],
];

Параметры конфигурации

code_repository

Класс-репозиторий для хранения паролей.

Допустимые значения:

  • Строка. В случае, если передана строка, библиотека обратится к PSR-11 контейнеру чтобы получить класс. Класс должен реализовывать интерйейс Prozorov\DataVerification\Contracts\CodeRepositoryInterface.
  • Замыкание, возвращающее экземпляр класса, реализующего Prozorov\DataVerification\Contracts\CodeRepositoryInterface. Замыкание будет выполнено единоразово, а не каждый раз при запросе репозитория.
  • Объект, реализующий интерфейс Prozorov\DataVerification\Contracts\CodeRepositoryInterface.

Обязательный параметр. Значение по умолчанию: отсутствует.

pass_length

Длина пароля.

Допустимые значения:

  • Число больше 0

Необязательный параметр. Значение по умолчанию: 4.

creation_code_threshold

Время (количество секунд), в течение которого нельзя запросить код повторно на один и тот же адрес.

Допустимые значения:

  • Число больше 0

Необязательный параметр. Значение по умолчанию: 60.

limit_per_hour

Количество попыток, которые можно сделать за час на один и тот же адрес

Допустимые значения:

  • Число больше 0.

Необязательный параметр. Значение по умолчанию: 10.

attempts

Количество попыток ввода пароля.

Допустимые значения:

  • Число больше 0

Необязательный параметр. Значение по умолчанию: 3.

password_validation_period

Время (количество секунд) жизни пароля.

Допустимые значения:

  • Число больше 0.

Необязательный параметр. Значение по умолчанию: 3600 (1 час).

transport_config

Настройки системы доставки сообщений

Допустимые значения: массив, ключами которого являются символьные коды метода доставки (например, sms, email) а значениями - - Объекты, реализующие интерфейс Prozorov\DataVerification\Contracts\TransportInterface,

  • Строковые названия классов, рализующих интерфейс Prozorov\DataVerification\Contracts\TransportInterface,
  • Замыкания, возвращающие объекты, реализующие интерфейс Prozorov\DataVerification\Contracts\TransportInterface.

messages

Настройки сообщений

Допустимые значения: массив, ключами которого являются символьные коды метода доставки (например, sms, email) а значениями - - Объекты, наследующиеся от Prozorov\DataVerification\Messages\AbstractMessage,

  • Строковые названия классов, наследующиеся от Prozorov\DataVerification\Messages\AbstractMessage,
  • Замыкания, возвращающие объекты, наследующиеся от Prozorov\DataVerification\Messages\AbstractMessage.