darshanadaptit/passport-otp-grant

用于注册和登录的护照OTP授权,通过验证码进行验证

dev-main 2023-01-17 07:54 UTC

This package is auto-updated.

Last update: 2024-09-17 11:17:17 UTC


README

Latest Version on Packagist Total Downloads Build Status StyleCI

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

安装

通过Composer

$ composer require darshanadaptit/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 can send otp code via sms , email , any messenger , ..... 
        $user->save();
        this->sendOtpCodeToUser(user);


    }
        
        
        

现在您可以使用护照如下验证用户

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

待办事项

  • 将 phone_number 改为用户
  • 添加测试
  • 添加CI

贡献

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

安全

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

致谢

许可协议

许可协议。请参阅许可文件以获取更多信息。