feat: Scanned-Keys 'Alle prüfen' Button + EasyMDE Refresh nach More-Toggle

- POST /api/admin/api-keys/scanned/recheck-all: prüft alle nicht-adoptierten Scanned-Keys sequenziell
- Button mit Loading-State, Ergebnis-Toast und Auto-Reload
- EasyMDE/CodeMirror refresh() nach initMoreButton() Einblenden (behebt leeren Editor-Bug)
This commit is contained in:
Meleki committed 2026-03-13 15:58:31 +01:00
1 parent a13355d7e9
commit 7352438b11
5 files changed
+47 -1

No files matched your search

+22
View File
@@ -29,6 +29,7 @@ public static class ApiKeysEndpoint
app.MapPost("/api/admin/api-keys/scan", HandleScanTrigger);
app.MapGet("/api/admin/api-keys/scan/status", HandleScanStatus);
app.MapGet("/api/admin/api-keys/scanned", HandleGetScanned);
app.MapPost("/api/admin/api-keys/scanned/recheck-all", HandleRecheckAll);
app.MapPost("/api/admin/api-keys/scanned/{id}/recheck", HandleRecheck);
app.MapPost("/api/admin/api-keys/scanned/{id}/adopt", HandleAdopt);
app.MapDelete("/api/admin/api-keys/scanned/{id}", HandleDeleteScanned);
@@ -274,6 +275,27 @@ public static class ApiKeysEndpoint
await ctx.Response.WriteAsJsonAsync(result);
}
private static async Task HandleRecheckAll(HttpContext ctx, DatabaseService db, KeyScannerService scanner)
{
if (!ctx.IsAdmin()) { ctx.Response.StatusCode = 403; return; }
var keys = await db.GetScannedKeys();
var notAdopted = keys.Where(k => k.AdoptedApiKeyId == null).ToList();
int success = 0, errors = 0;
foreach (var sk in notAdopted)
{
try
{
await scanner.CheckAndUpdateKey(sk);
success++;
}
catch { errors++; }
}
await ctx.Response.WriteAsJsonAsync(new { ok = true, total = notAdopted.Count, success, errors });
}
private static async Task HandleRecheck(HttpContext ctx, DatabaseService db, KeyScannerService scanner, string id)
{
if (!ctx.IsAdmin()) { ctx.Response.StatusCode = 403; return; }