37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Tymon\JWTAuth\Facades\JWTAuth;
|
|
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
|
|
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
|
|
use Tymon\JWTAuth\Exceptions\JWTException;
|
|
|
|
class JwtRefreshMiddleware
|
|
{
|
|
public function handle($request, Closure $next)
|
|
{
|
|
try {
|
|
JWTAuth::parseToken()->authenticate();
|
|
} catch (TokenExpiredException $e) {
|
|
try {
|
|
$newToken = JWTAuth::refresh(JWTAuth::getToken());
|
|
auth()->setToken($newToken);
|
|
|
|
$response = $next($request);
|
|
|
|
return $response->header('Authorization', 'Bearer ' . $newToken);
|
|
} catch (\Exception $e) {
|
|
return response()->json(['message' => 'Session expired, please login again'], 401);
|
|
}
|
|
} catch (TokenInvalidException $e) {
|
|
return response()->json(['message' => 'Invalid token'], 401);
|
|
} catch (JWTException $e) {
|
|
return response()->json(['message' => 'Token missing'], 401);
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|