moeen-basra / laravel-passport-otp-grant
Laravel Passport One Time Pin Grant
Installs: 1 198
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.1
Requires (Dev)
- laravel/passport: ^10.3
README
This is a small package for laravel passport otp authentication easy to integrate.
How to
Following are a few steps you need to follow to make it work.
- Install this package using the composer
composer require moeen-basra/laravel-passport-otp-grant
- Implement the
MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface
on your desired provider model.
use Illuminate\Foundation\Auth\User as BaseUser; use MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface; class User extends BaseUser implements OneTimePinGrantUserInterface { //... /** * {@inheritDoc} */ public function findAndValidateForPassportOtpGrant(string $mobile_number, string $code) { if (!OneTimePin::validate($mobile_number, $code)) { return null; } return static::firstOrCreate([ 'mobile_number' => $mobile_number ]); } }
- This step is optional, add the service provider under the providers array in
config/app.php
.
'providers' => [ //... MoeenBasra\OneTimePinGrant\OneTimePinGrantServiceProvider::class, ]
That's it now you can call the otp login using same params you use for other passport end points
curl --location --request POST 'https://api.example.com/oauth/token' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --form 'username="mobile_number"' \ --form 'password="code"' \ --form 'grant_type="otp"' \ --form 'client_id="client_id"' \ --form 'client_secret="client_secret"' \ --form 'scope="*"'
More
You can check out the Laravel Passport official documentation for more details.
Contributions
You are welcome, you can create a pull request. You will be credited for any contribution.
Issues
If you are facing any problem feel free to report here.