prozorov/data-locker

此包最新版本(0.1.0)没有提供许可证信息。

0.1.0 2020-12-11 20:28 UTC

This package is auto-updated.

Last update: 2024-09-12 14:33:09 UTC


README

Scrutinizer Code Quality Code Coverage Build Status Code Intelligence Status

安装

composer require prozorov/data-locker

库架构

用于生成一次性密码(OTP)的库由以下组件组成

  • 锁(Locker) 是用于处理一次性密码系统(库接口)的基本类。预期只使用此类。库中的所有其他类都是辅助性的,应用与它们的直接交互不被预期。
  • 存储库(Repository) 是与存储(数据库)交互的类。
  • 配置类 是包含一次性密码系统所有配置的类。
  • 传输系统 将实现带有一次性密码的消息传递的类。
  • 消息系统 是消息类。

使用方法

密码存储库

首先需要创建用于一次性密码存储库的适配器。存储库是实现 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

消息传递系统设置

有效值:键为传递方法符号代码(例如,smsemail)的数组,值为实现 Prozorov\DataVerification\Contracts\TransportInterface 的对象。

  • 实现 Prozorov\DataVerification\Contracts\TransportInterface 的类字符串名称。
  • 返回实现 Prozorov\DataVerification\Contracts\TransportInterface 的对象的闭包。

messages

消息设置

有效值:键为传递方法符号代码(例如,smsemail)的数组,值为继承自 Prozorov\DataVerification\Messages\AbstractMessage 的对象。

  • 继承自 Prozorov\DataVerification\Messages\AbstractMessage 的类字符串名称。
  • 返回继承自 Prozorov\DataVerification\Messages\AbstractMessage 的对象的闭包。