amin3536/passport-otp-grant

用于注册和登录的护照OTP授权

v1.1.1 2024-01-22 16:27 UTC

README

Latest Version on Packagist Total Downloads Build Status StyleCI

此包可以帮助您通过laravel-passport实现OTP授权(注册 - 登录验证码或双验证码)

安装

通过Composer

$ composer require amin3536/passport-otp-grant

初始

1. 在您的项目中安装和初始化laravel passport,并创建一个密码客户端

2. 将以下两行添加到您的用户迁移中(如果需要使用自定义行,请参阅自定义部分)

    //...
    $table->string('phone_number')->unique();
    $table->integer('otp')->nullable();
    //...

在您的模型中添加 use HasOTP;

<?php
class User extends Authenticatable
{
    use HasFactory, Notifiable, HasApiTokens, HasOTP;
    //...
    }

示例用法

以下示例和逻辑是关于使用 otp 登录和注册的。(它不涉及双验证)

public function userLoginOrRegister(UserLoginRequest $request)
    {

        $user = $this->userModel->wherePhoneNumber($request['phone_number'])->first();
        if (!$user) {
            $user = $this->userModel->create(['phone_number' => $request['phone_number']]);
        }

        $user->otp = $code_verifier = rand(10000, 99999);
        //you cand send otp code via sms , email , any messanger , ..... 
        $user->save();
        this->sendOtpCodeToUser(user);


    }
        
        
        

现在您可以使用以下方式通过passport验证用户

Request::create('/oauth/token',
            'POST',
            [
                'grant_type' => 'otp_grant',
                'client_id' => 'client_id',
                'client_secret' => client_secret',
                'phone_number' => 'phone_number',
                'otp' => 'otp',
                'scope' =>'',
            ]);

自定义

<?php
class User extends Authenticatable
{
    use HasFactory, Notifiable, HasApiTokens, HasOTP;
    
    $phoneNumberColumn='anything';
    $OTPColumn='my_otp';
    //otp expire time in minute 
    $OTPExpireTime=15;
    //...
    }

变更日志

请参阅变更日志了解最近更改的详细信息。

测试

$ composer test

待办事项

  • 将电话号码改为用户
  • 添加测试
  • 添加CI

贡献

请参阅contributing.md以获取详细信息和一个待办事项列表。

安全

如果您发现任何与安全相关的问题,请通过作者邮箱而不是使用问题跟踪器。

致谢

许可证

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