新增封禁名单联控 + 用户管理封禁显示

- land_api.php: web_player_bans表 + handleSyncBans + sync_bans action
- admin.php: list_bans API接口
- admin.php前端: 用户行显示封禁状态(红色+禁图标+hover详情)
This commit is contained in:
ypsdf1
2026-07-12 22:08:46 +08:00
parent 498245d967
commit b34753d1fd
4 changed files with 132 additions and 5 deletions
+20
View File
@@ -77,6 +77,7 @@ switch ($action) {
case 'list_same_ip': adminListSameIp(); break;
case 'list_users_paginated': adminListUsersPaginated(); break;
case 'cdk_delete': adminDeleteCDK(); break;
case 'list_bans': adminListBans(); break;
default: exit(json_encode(['success' => false, 'message' => 'Unknown action: ' . $action], JSON_UNESCAPED_UNICODE));
}
} catch (\Throwable $e) {
@@ -2439,3 +2440,22 @@ function adminDeleteCDK() {
exit(json_encode(['success' => false, 'message' => 'Internal error'], JSON_UNESCAPED_UNICODE));
}
}
/**
* 获取封禁名单(供用户管理页面显示封禁状态)
*/
function adminListBans() {
requireAdminSession();
try {
$db = getDB();
$result = $db->query("SELECT target, ban_type, reason, source, expire_time FROM web_player_bans");
$bans = [];
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$bans[] = $row;
}
exit(json_encode(['success' => true, 'data' => $bans], JSON_UNESCAPED_UNICODE));
} catch (\Throwable $e) {
@error_log('[adminListBans] Error: ' . $e->getMessage());
exit(json_encode(['success' => false, 'message' => 'Internal error'], JSON_UNESCAPED_UNICODE));
}
}