moeen-basra/laravel-passport-otp-grant

Laravel Passport 单次密码授权

v1.1.0 2022-01-15 17:55 UTC

This package is auto-updated.

Last update: 2024-09-15 23:44:16 UTC


README

这是一个为 Laravel Passport OTP 认证提供的简单易集成的包。

如何使用

以下是一些您需要遵循的步骤来使它工作。

  1. 使用 composer 安装此包
composer require moeen-basra/laravel-passport-otp-grant
  1. 在您的期望提供者模型上实现 MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface 接口。
use Illuminate\Foundation\Auth\User as BaseUser;
use MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface;

class User extends BaseUser implements OneTimePinGrantUserInterface
{
    //...
    
    /**
     * {@inheritDoc}
     */
    public function findAndValidateForPassportOtpGrant(string $mobile_number, string $code)
    {
        if (!OneTimePin::validate($mobile_number, $code)) {
            return null;
        }
        
        return static::firstOrCreate([
            'mobile_number' => $mobile_number
        ]);
    }
}
  1. 这一步是可选的,在 config/app.php 中的 providers 数组下添加服务提供者。
   'providers' => [
        //...
        MoeenBasra\OneTimePinGrant\OneTimePinGrantServiceProvider::class,
    ]

就是这样,现在您可以使用与其他 passport 端点相同的参数调用 otp 登录。

curl --location --request POST 'https://api.example.com/oauth/token' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--form 'username="mobile_number"' \
--form 'password="code"' \
--form 'grant_type="otp"' \
--form 'client_id="client_id"' \
--form 'client_secret="client_secret"' \
--form 'scope="*"'

更多

有关更多详细信息,请参阅Laravel Passport 的官方文档。

贡献

欢迎您,您可以创建pull request。您的任何贡献都将获得认可。

问题

如果您遇到任何问题,请随时在此处报告。