dev-main 2023-04-30 19:40 UTC

This package is not auto-updated.

Last update: 2024-09-25 17:44:20 UTC


README

一个用于生成 OTP 的 Laravel 扩展包。


🚀 安装

Composer 允许您通过命令行快速安装。

  composer require eagleeye/otp

🚀供应商发布

注意
发布供应商是可选的,只有当您愿意更改配置并使用数据库作为 OTP 存储时才需要。


发布配置文件

php artisan vendor:publish --provider="Eagleeye\Otp\OtpServiceProvider" --tag=config

发布数据库迁移文件

php artisan vendor:publish --provider="Eagleeye\Otp\OtpServiceProvider" --tag=migrations

配置文件

注意
您可以在 config 文件夹中找到 OTP 配置文件,名称为 otp.php


otp.php

<?php

return
[   /**
    * [Description for prefix]
    *
    * Example: G  | Output G-12345678
    * 
    */
    'prefix'=>null,

    /**
     * [Description for boot]
     *
     * Example: numeric         | Output  12345678
     * Example: alphabetic      | Output  ktylnfdgf
     * Example: alphanumeric    | Output  kt7l7fdg9
     * Example: mixnumeric      | Output  !45<45!)
     * Example: mixalphabetic   | Output  !ta<hg!)
     * Example: mixalphanumeric | Output  !t4<7g!)
     */
    'type'=>'numeric',

    /**
     * [Description for length]
     *
     * Example: 6    | Output 123456
     * Example: 8    | Output 12345678
     * 
     */
    'length'=>'6',

    /**
     * [Description for Mood]
     *
     * @return [type]
     * 
     */
    'mood'=>env('APP_ENV'),

    /**
     * [Description for storage]
     *
     * Example: databse     | OTP will store in databse
     * Example: cache       | OTP will store in cache
     * Example: session     | OTP will store in session
     */
    'storage'=>'database',

    /**
     * [Description for expire]
     *
     * OTP expire time 
     * In seconds
     * 
     */
    'expire'=>"60",

    /**
     * [Description for case]
     *
     * Example: lower    | Output werfghyt
     * Example: upper    | Output AFKUTDFG
     */
    'case'=>'lower',


    /**
     * [Description for table_name]
     *
     * Table name to create table in databse
     * 
     */
    'table_name'=>'otp_table'
];

  • 前缀

    • prefix 的默认值是 null。如果您想在每个生成的 OTP 中添加文本、商标或单个字符,如 google 注册 OTP,只需添加前缀值。<br> Prefix 和实际的 OTP 将由一个 ( - ) 分隔。

  • 类型

    • type 代表 OTP 字符串类型。默认值是 numeric。<br> Prefix 和实际的 OTP 将由一个 - 分隔。

  • 长度

    • length 代表生成的 OTP 中的字符总数。默认长度是 6

  • 存储

    • Cache Storage 用作默认存储来存储 OTP。在使用 database 作为 OTP 存储之前,请务必发布 Otp migration 文件。

      存储选项

      • cache
      • session
      • database
  • 过期时间

    • expire - OTP 的有效期为几秒
  • 大小写

    • case - 区分大小写。

  • 表名

    • table_name - 使用此名称创建 OTP 数据库迁移表。默认表名为 otp_table


🚀用法


导入 OTP 门面

  use Eagleeye\Otp\Facades\OTP;

静态函数: get

//Facade accessor public function
public function get(String $key)
{
         //processing...
}

这将生成一个在过期时间(配置文件中配置)内有效的 OTP,对于每个 OTP 请求,该方法将响应一个包含新过期时间的新的 OTP 字符串。


  • $key:与 OTP 相关联的密钥。

示例

<?php

$otp = OTP::get('usertoken');

echo $otp;

// 20220317221648
// https://example/url

"267958"

静态函数: interval

//Facade accessor public function
public function interval(String $key)
{
        //processing...
}

这将生成一个在过期时间(配置文件中配置)内有效的 OTP,对于新请求,只有在之前的 OTP 以 $key 为键已过期或为空时,才会生成新的 OTP。


  • $key:与 OTP 相关联的密钥。

OTP 未过期时的示例

<?php

$otp = OTP::interval('usertoken');

echo $otp;

// 20220317221648
// https://example/url

array:2 [▼
  "expired" => false
  "remaining" => "00 00:01:49" //Remaining time of expiration
]

OTP 已过期时的示例

<?php

$otp = OTP::interval('usertoken');

echo $otp;

// 20220317221648
// https://example/url

array:2 [▼
  "expired" => true
  "otp" => "282561" //New otp
]

静态函数: action

//Facade accessor public function
public function action(String $key,Callable $callback)
{
     //processing...
}

这将生成一个在过期时间(配置文件中配置)内有效的 OTP,对于每个 OTP 请求,该方法将响应一个包含新过期时间的新的 OTP 字符串。该函数还接受一个额外的 callable 参数,在返回 OTP 字符串之前执行额外的工作(如 SMS、EMAIL 等)。


  • $key:与 OTP 相关联的密钥。
  • $callback:接受一个可调用的函数。特别适用于实现 SMS 网关、Email 等...

示例

<?php

$otp = OTP::action('usertoken',function($otp){
    //Sms::send('+8801*******',$otp);
});

echo $otp;

// 20220317221648
// https://example/url

"267958"

静态函数: intervalaction

//Facade accessor public function
public function intervalaction(String $key,Callable $callback)
{
     //processing...
}

与 Interval 类似,该函数将生成新的 OTP,直到之前的 OTP 过期。


  • $key:与 OTP 相关联的密钥。
  • $callback:接受一个可调用的函数。特别适用于实现 SMS 网关、Email 等...

OTP 未过期时的示例

<?php

$otp = OTP::intervalaction('usertoken',function($otp){
    //Sms::send('+8801*******',$otp);
});

echo $otp;

// 20220317221648
// https://example/url

array:2 [▼
  "expired" => false
  "remaining" => "00 00:01:49" //Remaining time of expiration
]

OTP 已过期时的示例

<?php

$otp = OTP::intervalaction('usertoken',function($otp){
    //Sms::send('+8801*******',$otp);
});

echo $otp;

// 20220317221648
// https://example/url

array:2 [▼
  "expired" => true
  "otp" => "282561" //New otp
]

静态函数: Readonly

//Facade accessor public function
public function readonly($options=nullable)
{
     //processing...
}

这将返回一个随机生成的字符串供其他用途。


  • $options:它接受一个数组作为参数来替换 配置 文件参数。

示例

<?php

$result=OTP::readonly(['prefix'=>'sn','length'=>15,'case'=>'upper','type'=>'alphabetic']);
echo $result;

// 20220331221403
// http://otp.test/

"sn-ISUQXTFPQYJIMSR"



作者

👤 Shuvo Dewan



贡献

如果您发现此包有任何问题或有任何建议,请提供帮助。