TKK_E32230273/api_generate_door_token.php

44 lines
1.0 KiB
PHP

<?php
header('Content-Type: application/json');
$tokensFile = __DIR__ . '/door_tokens.json';
$tokens = [];
// Read existing tokens
if (file_exists($tokensFile)) {
$content = file_get_contents($tokensFile);
if ($content) {
$tokens = json_decode($content, true) ?: [];
}
}
// Cleanup expired tokens (> 5 minutes old)
$currentTime = time();
$activeTokens = [];
foreach ($tokens as $token => $data) {
if (($currentTime - $data['created_at']) <= 300) { // 5 minutes
if (!isset($data['used']) || !$data['used']) {
$activeTokens[$token] = $data;
}
}
}
// Generate new random token
$newToken = bin2hex(random_bytes(16)); // 32 hex chars
$activeTokens[$newToken] = [
'created_at' => $currentTime,
'used' => false
];
// Save back
file_put_contents($tokensFile, json_decode('{}')); // clear out file first securely?
file_put_contents($tokensFile, json_encode($activeTokens, JSON_PRETTY_PRINT));
echo json_encode([
'status' => 'success',
'token' => $newToken,
'expires_in' => 300
]);
?>