-
You can install the package via composer:
composer require altrntv/sanctum-refresh-tokens -
Publish migrations
php artisan vendor:publish --tag=sanctum-refresh-tokens -
Run migrations
php artisan migrate -
Extend your User model from Tokenable and HasSanctumTokens
use Altrntv\SanctumRefreshTokens\Contracts\Tokenable; use Altrntv\SanctumRefreshTokens\HasSanctumTokens; class User implements Tokenable { use HasSanctumTokens; }
-
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 change tokens expire time configure config/sanctum.php
'expiration' => env('SANCTUM_ACCESS_TOKEN_EXPIRATION', 60), // minutes 'refresh_token_expiration' => env('SANCTUM_REFRESH_TOKEN_EXPIRATION', 7 * 24 * 60), // minutes 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), 'refresh_token_prefix' => env('SANCTUM_REFRESH_TOKEN_PREFIX', ''),
Creating a refresh token
use Altrntv\SanctumRefreshTokens\Config\ConfigHelper;
use Altrntv\SanctumRefreshTokens\Contracts\Tokenable;
$accessTokenExpiresAt = ConfigHelper::accessTokenExpiresAt();
$refreshTokenExpiresAt = ConfigHelper::refreshTokenExpiresAt();
$accessToken = $user->createToken(
name: 'access_token',
expiresAt: $accessTokenExpiresAt,
);
$refreshToken = $user->createRefreshToken(
personalAccessTokenId: $accessToken->accessToken->id,
expiresAt: $refreshTokenExpiresAt,
);
return new TokenDTO(
model: $user->getMorphClass(),
tokenType: 'Bearer',
accessToken: $accessToken->plainTextToken,
accessTokenExpiresAt: $accessTokenExpiresAt,
refreshToken: $refreshToken->plainTextToken,
refreshTokenExpiresAt: $refreshTokenExpiresAt,
user: $user,
);Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.