PHPackages                             prozorov/data-locker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. prozorov/data-locker

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

prozorov/data-locker
====================

0.1.0(5y ago)23.1k1[4 issues](https://github.com/artem-prozorov/data-locker/issues)1PHPCI failing

Since Jul 2Pushed 5y ago1 watchersCompare

[ Source](https://github.com/artem-prozorov/data-locker)[ Packagist](https://packagist.org/packages/prozorov/data-locker)[ RSS](/packages/prozorov-data-locker/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (2)Dependencies (5)Versions (3)Used By (1)

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

[](#data-locker-библиотека-для-защиты-информации-одноразовым-паролем)

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/af6de690dc937eb6c9f61465ac2a5dacccb1f66db2fba1569b59bd688c7700cc/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f617274656d2d70726f7a6f726f762f646174612d6c6f636b65722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/artem-prozorov/data-locker/?branch=master)[![Code Coverage](https://camo.githubusercontent.com/b87164aac8b632f26a3d318920c91f176b256dc10912b61d3a56cfd2040a471b/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f617274656d2d70726f7a6f726f762f646174612d6c6f636b65722f6261646765732f636f7665726167652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/artem-prozorov/data-locker/?branch=master)[![Build Status](https://camo.githubusercontent.com/500d06db6c2c5ef2b94d151a16715f1b394177d99b5ebb04d39838771def1e9f/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f617274656d2d70726f7a6f726f762f646174612d6c6f636b65722f6261646765732f6275696c642e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/artem-prozorov/data-locker/build-status/master)[![Code Intelligence Status](https://camo.githubusercontent.com/9e1affc6bbf7543d7618edbb0abe89481ed3dae79d6e8ad294105954a67b911e/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f617274656d2d70726f7a6f726f762f646174612d6c6f636b65722f6261646765732f636f64652d696e74656c6c6967656e63652e7376673f623d6d6173746572)](https://scrutinizer-ci.com/code-intelligence)

Установка
---------

[](#установка)

`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

[](#code_repository)

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

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

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

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

### pass\_length

[](#pass_length)

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

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

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

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

### creation\_code\_threshold

[](#creation_code_threshold)

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

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

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

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

### limit\_per\_hour

[](#limit_per_hour)

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

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

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

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

### attempts

[](#attempts)

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

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

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

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

### password\_validation\_period

[](#password_validation_period)

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

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

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

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

### transport\_config

[](#transport_config)

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

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

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

### messages

[](#messages)

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

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

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

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~162 days

Total

2

Last Release

2029d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/26834275?v=4)[Artem Prozorov](/maintainers/artem-prozorov)[@artem-prozorov](https://github.com/artem-prozorov)

---

Top Contributors

[![artprozorov](https://avatars.githubusercontent.com/u/188947463?v=4)](https://github.com/artprozorov "artprozorov (36 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/prozorov-data-locker/health.svg)

```
[![Health](https://phpackages.com/badges/prozorov-data-locker/health.svg)](https://phpackages.com/packages/prozorov-data-locker)
```

###  Alternatives

[symfony/symfony

The Symfony PHP framework

31.4k87.2M2.2k](/packages/symfony-symfony)[symfony/dependency-injection

Allows you to standardize and centralize the way objects are constructed in your application

4.2k455.6M9.5k](/packages/symfony-dependency-injection)[deptrac/deptrac

Deptrac is a static code analysis tool that helps to enforce rules for dependencies between software layers.

3.0k8.8M113](/packages/deptrac-deptrac)[illuminate/contracts

The Illuminate Contracts package.

706130.3M13.2k](/packages/illuminate-contracts)[mcp/sdk

Model Context Protocol SDK for Client and Server applications in PHP

1.5k1.5M83](/packages/mcp-sdk)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M415](/packages/drupal-core-recommended)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
