darshanadaptit / passport-otp-grant
用于注册和登录的护照OTP授权,通过验证码进行验证
dev-main
2023-01-17 07:54 UTC
Requires
- illuminate/support: ~7|~8
- laravel/passport: ^10.1
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-17 11:17:17 UTC
README
此包帮助您通过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以获取详细信息和一个待办事项列表。
安全
如果您发现任何安全问题,请通过作者邮箱联系,而不是使用问题跟踪器。
致谢
许可协议
许可协议。请参阅许可文件以获取更多信息。