89 lines
No EOL
3 KiB
PHP
89 lines
No EOL
3 KiB
PHP
<?php
|
|
require_once __DIR__ . "/session_bootstrap.php";
|
|
require_once __DIR__ . "/functions.php";
|
|
|
|
// Refresh session and tokens
|
|
if (session_status() === PHP_SESSION_ACTIVE) {
|
|
$tokens_refreshed = false;
|
|
$cache_cleared = false;
|
|
|
|
// Check if we need to refresh tokens
|
|
if (isset($_SESSION["characters"]) && !empty($_SESSION["characters"])) {
|
|
$page_load_time = time();
|
|
$last_token_refresh = $_SESSION['last_token_refresh'] ?? 0;
|
|
|
|
// Only refresh tokens if it's been at least 5 minutes since the last refresh
|
|
if ($page_load_time - $last_token_refresh > 300) {
|
|
foreach ($_SESSION["characters"] as $character_id => &$charData) {
|
|
// Skip invalid character entries
|
|
if (empty($character_id)) continue;
|
|
|
|
if (isset($charData["refresh_token"])) {
|
|
// Check if the access token is expired or missing
|
|
if (!isset($charData["access_token"]) ||
|
|
is_token_expired($charData["access_token"])) {
|
|
$new_tokens = refresh_token($charData["refresh_token"]);
|
|
if (!empty($new_tokens["access_token"])) {
|
|
$charData["access_token"] = $new_tokens["access_token"];
|
|
$tokens_refreshed = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
unset($charData); // Break reference to avoid unexpected behavior
|
|
$_SESSION['last_token_refresh'] = $page_load_time;
|
|
|
|
// Only clear cache if tokens were refreshed
|
|
if ($tokens_refreshed) {
|
|
// Clear specific cache entries
|
|
$cache_keys = [
|
|
'character_jobs_',
|
|
'corporation_jobs_',
|
|
'all_character_blueprints'
|
|
];
|
|
|
|
foreach ($cache_keys as $prefix) {
|
|
$cleared = clear_cache_by_prefix($prefix);
|
|
if ($cleared) $cache_cleared = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
echo json_encode([
|
|
"status" => "success",
|
|
"message" => "Session refreshed",
|
|
"tokens_refreshed" => $tokens_refreshed,
|
|
"cache_cleared" => $cache_cleared,
|
|
"timestamp" => time()
|
|
]);
|
|
} else {
|
|
echo json_encode(["status" => "error", "message" => "Session not active"]);
|
|
}
|
|
|
|
// Function to clear cache entries by prefix
|
|
function clear_cache_by_prefix($prefix) {
|
|
$cache_dir = __DIR__ . "/cache";
|
|
$cache_file = $cache_dir . "/api_cache.json";
|
|
|
|
if (!file_exists($cache_file)) {
|
|
return false;
|
|
}
|
|
|
|
$cache = json_decode(file_get_contents($cache_file), true) ?: [];
|
|
$cleared = false;
|
|
|
|
foreach ($cache as $key => $value) {
|
|
if (strpos($key, $prefix) === 0) {
|
|
unset($cache[$key]);
|
|
$cleared = true;
|
|
}
|
|
}
|
|
|
|
if ($cleared) {
|
|
file_put_contents($cache_file, json_encode($cache));
|
|
}
|
|
|
|
return $cleared;
|
|
}
|
|
?>
|