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); } }