amin3536 / passport-otp-grant
用于注册和登录的护照OTP授权
v1.1.1
2024-01-22 16:27 UTC
Requires
- illuminate/support: ~7|~8|~9|~10
- laravel/passport: ^10.1|^11
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-22 18:20:30 UTC
README
此包可以帮助您通过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以获取详细信息和一个待办事项列表。
安全
如果您发现任何与安全相关的问题,请通过作者邮箱而不是使用问题跟踪器。
致谢
许可证
许可证。有关更多信息,请参阅许可证文件。