45 lines
1.6 KiB
PHP
45 lines
1.6 KiB
PHP
<?php
|
|
// Admin/fuel/rotate_key.php — توليد مفتاح جديد لمحطة
|
|
// POST: station_id
|
|
//
|
|
// يُستعمل عند فقدان المحطة مفتاحها أو الشك في تسريبه. المفتاح القديم
|
|
// يتوقّف فوراً — وهذا مقصود: التدوير إجراء أمني، وإبقاء القديم يعمل
|
|
// «حتى تنتقل المحطة» يُفرغه من معناه.
|
|
|
|
require_once __DIR__ . '/../../connect.php';
|
|
|
|
if ($role !== 'admin' && $role !== 'super_admin') {
|
|
jsonError('Unauthorized: Admin access required', 403);
|
|
}
|
|
|
|
$stationId = (int) (filterRequest('station_id', 'int') ?: 0);
|
|
if ($stationId <= 0) {
|
|
jsonError('station_id مطلوب');
|
|
}
|
|
|
|
try {
|
|
$st = $con->prepare("SELECT name_ar FROM fuel_stations WHERE id = ? LIMIT 1");
|
|
$st->execute([$stationId]);
|
|
$name = $st->fetchColumn();
|
|
|
|
if ($name === false) {
|
|
jsonError('المحطة غير موجودة', 404);
|
|
}
|
|
|
|
$plainKey = bin2hex(random_bytes(24));
|
|
|
|
$con->prepare("UPDATE fuel_stations SET api_key_hash = ? WHERE id = ?")
|
|
->execute([hash('sha256', $plainKey), $stationId]);
|
|
|
|
error_log("[admin/fuel] دُوِّر مفتاح المحطة #$stationId بواسطة $user_id");
|
|
|
|
jsonSuccess([
|
|
'station_id' => $stationId,
|
|
'station' => $name,
|
|
'api_key' => $plainKey,
|
|
], 'المفتاح القديم توقّف. انسخ الجديد الآن — لن يظهر مرة أخرى.');
|
|
} catch (PDOException $e) {
|
|
error_log('[admin/fuel/rotate_key] ' . $e->getMessage());
|
|
jsonError('Server error', 500);
|
|
}
|