youngmayor/laravel-otp

用于生成和验证一次性密码的laravel包

1.0.0 2021-11-29 20:24 UTC

This package is auto-updated.

Last update: 2024-09-29 06:31:04 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

用于创建、验证和管理OTP的laravel包。

安装

您可以通过composer安装此包

composer require youngmayor/laravel-otp

该包使用自动发现,因此如果您使用Laravel 5.5或更高版本,安装包将自动在您的应用程序中注册。

但是,如果您使用Laravel 5.4或以下版本,您需要将以下代码片段添加到您的 config/app.php 中以注册服务提供者和别名

'providers' => [
    // ...
    YoungMayor\LaravelOtp\LaravelOtpServiceProvider,
    // ...
],

下一步是发布包的配置。可以使用以下命令完成此操作

php artisan vendor:publish --provider="YoungMayor\LaravelOtp\LaravelOtpServiceProvider" 

这会将包配置复制到 config/laravel-otp.php

然后您运行迁移来创建OTP表

php artisan migrate

用法

打算管理OTP代码的模型应扩展 YoungMayor\LaravelOtp\Traits\OTPActions 特性

// ...
use YoungMayor\LaravelOtp\Traits\OTPActions;
// ...

class ExampleModel
{
    // ...
    use OTPActions;
    // ....
}

模型必须具有电子邮件字段。此字段将存储生成OTP代码的收件人。假设该字段名为email。如果字段名称不同,则应使用以下代码进行配置

class ExampleModel
{
  use OTPActions; 

  public $otpEmailKey = 'user_email';
}

现在可以使用该模型管理OTP。

OTP创建

// $exampleModel is an instance of ExampleModel
// $payload is additional data that you would like to attach to the OTP token. 
// The payload can be an array, a string or an integer
$exampleModel->generatOTP('action-name', $payload);

这会使用在 config/laravel-otp.php 中定义的配置生成OTP,并将生成的OTP通过电子邮件发送到模型的附件

OTP验证

// $exampleModel is an instance of ExampleModel and has a pending OTP
// $pin is the OTP pin that is to be validated
$otp = $exampleModel->validateOTP($pin, 'action-name');

如果密码正确,则返回 YoungMayor\LaravelOtp\Models\OneTimePin 的实例,否则返回null

if (!$otp) {
    // handle invalid OTP code
}

管理OTP

OTP现在可以按以下方式管理

$otp->is_expired; // check if the OTP is expired

$payload = $otp->payload; // retrieve the OTP's Payload

$otp->refreshOTP(); // re-generate a new OTP code and send to the recipient

$otp->delete(); // delete the OTP

关系

使用 OTPActions 特性的每个模型都具有 otps 关系,并且可以在其上执行 laravel一对多 关系。

同样,从 YoungMayor\LaravelOtp\Models\OneTimePin 实例。您可以使用源关系方法检索源模型

$exampleModel = $otp->source;

异常

该包渲染两个异常

  • YoungMayor\LaravelOtp\Exceptions\InvalidAction 异常:当尝试使用未在 config/laravel-otp.php 文件中注册的操作进行 generateOTP()validateOTP() 时抛出。

  • YoungMayor\LaravelOtp\Exceptions\InvalidSource 异常:当给定源未使用 OTPActions 特性时抛出

测试

composer test

更改日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何安全问题,请通过电子邮件 youngmayor.dev@gmail.com 而不是使用问题跟踪器

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件

Laravel包模板

此包是使用 Laravel包模板 生成的。