dbfun / jwtapi
Obtaining Jwt tokens via API by login and password
dev-master
2021-01-16 19:25 UTC
Requires
- illuminate/support: ^8.2
- laravel/passport: ^10.1
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3|~4|~5|~6
- phpunit/phpunit: ~8.0|~9.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-04-17 02:54:56 UTC
README
Obtaining Jwt tokens from Laravel Passport via API by login and password. No client_id
and client_secret
required.
Token claims customization. No Guzzle dependency.
Installation
composer require dbfun/jwtapi
# Choose "yes":
php artisan passport:install --uuids
Save Client ID for future reference.
Personal access client created successfully.
Client ID: ..............
Client secret: ..............
config/auth.php
:
'api' => [ 'driver' => 'passport', 'provider' => 'users', 'hash' => false, ],
Add to config/app.php
:
/* * Package Service Providers... */ Dbfun\JwtApi\JwtApiServiceProvider::class,
Add to app/Providers/AuthServiceProvider.php
:
\Dbfun\JwtApi\JwtApi::routes(); // \Laravel\Passport\Passport::tokensCan(/* List of scopes */);
Add to model file User.php
:
use Dbfun\JwtApi\Traits\JwtApiTokenTrait; use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use JwtApiTokenTrait; use HasApiTokens; public function scopes(): array { // put here the logic return []; } }
Keys
You can generate private and public keys via this snippet:
mkdir /tmp/keys ssh-keygen -t rsa -f /tmp/keys/key openssl rsa -in /tmp/keys/key -pubout > /tmp/keys/key.pub cat /tmp/keys/*
Add to .env
:
PASSPORT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n(private key)\n-----END RSA PRIVATE KEY-----"
PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n(public key)\n-----END PUBLIC KEY-----"
PASSPORT_PERSONAL_ACCESS_CLIENT_ID=
Use personal Client ID from above. Or look in the oauth_clients
table. Or generate new:
php artisan passport:client --personal
Auth providers
The auth provider is configured through configuration auth.guards.api.provider
:
return [ 'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', // <-- provider name 'hash' => false, ], ], 'providers' => [ 'users' => [ // <-- "users" provider config 'driver' => 'eloquent', // <-- driver 'model' => \App\Models\User::class, // <-- driver option ], ], ];