d076 / sanctum-refresh-tokens
Refresh token realization for laravel sanctum
v3.0.0
2024-08-12 17:13 UTC
Requires
- php: ^8.2
- laravel/framework: ^11.0
- laravel/sanctum: ^4.0
README
Installation
composer require d076/sanctum-refresh-tokens
Usage
-
Register SanctumRefreshServiceProvider in bootstrap/providers.php
-
Publish migrations
php artisan vendor:publish --tag=sanctum-refresh-tokens
-
Run migrations
php artisan migrate
-
Extend your User model from AuthenticatableUser
use D076\SanctumRefreshTokens\Models\AuthenticatableUser; class User extends AuthenticatableUser { }
-
Add prune commands to Schedule
use Illuminate\Support\Facades\Schedule; Schedule::command('sanctum:prune-expired --hours=0')->hourly(); Schedule::command('sanctum:prune-refresh-expired --hours=0')->daily();
-
To create access and refresh tokens use TokenService
use D076\SanctumRefreshTokens\Services\TokenService; /** @var \D076\SanctumRefreshTokens\Models\AuthenticatableUser $user */ (new TokenService($user))->createTokens(); (new TokenService($user))->deleteCurrentTokens();
-
To change tokens expire time configure config/sanctum.php
'expiration' => env('SANCTUM_ACCESS_TOKEN_EXPIRATION', 60), // minutes 'refresh_token_expiration' => env('SANCTUM_REFRESH_TOKEN_EXPIRATION', 43200), // minutes 'refresh_token_expiration_no_remember' => env('SANCTUM_REFRESH_TOKEN_EXPIRATION_NO_REMEMBER', 1440), // minutes