amin3536 / passport-otp-grant
passport otp grant for register and login with verify code
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-10-22 18:33:03 UTC
README
this package help you to implement otp grant (register - login with verify code or two verification code ) via laravel-passport
Installation
Via Composer
$ composer require amin3536/passport-otp-grant
initial
1-install and initial laravel passport in your project and create a password-client
2- add below two rows to your user migration ( if you want use custom rows see customising section)
//... $table->string('phone_number')->unique(); $table->integer('otp')->nullable(); //...
add use HasOTP;
in your model :
<?php class User extends Authenticatable { use HasFactory, Notifiable, HasApiTokens, HasOTP; //... }
sample usage
below sample and logic is about login and register with otp
. (it's not about two verification )
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); }
now you can verify user with passport like below
Request::create('/oauth/token', 'POST', [ 'grant_type' => 'otp_grant', 'client_id' => 'client_id', 'client_secret' => client_secret', 'phone_number' => 'phone_number', 'otp' => 'otp', 'scope' =>'', ]);
customising
<?php class User extends Authenticatable { use HasFactory, Notifiable, HasApiTokens, HasOTP; $phoneNumberColumn='anything'; $OTPColumn='my_otp'; //otp expire time in minute $OTPExpireTime=15; //... }
Change log
Please see the changelog for more information on what has changed recently.
Testing
$ composer test
to do list
- change phone_number to user
- add test
- add CI
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email author email instead of using the issue tracker.
Credits
License
license. Please see the license file for more information.