Devlog-Löschung: Discord-Delete-Sync + Admin-Button im Webinterface

- MessageDelete-Listener (mit Partials): in Discord gelöschte Devlogs verschwinden
  automatisch aus dem Archiv, inkl. lokaler Bilder
- DELETE /api/devlogs/:id (nur Admin) + ✕-Button auf den Karten (nur für Admin sichtbar)
- Anlass: Test-Post mit Commit-Liste von vor der Prosa-Sperre stand noch im Archiv

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 01:16:44 +02:00
co-authored by Claude Opus 4.8
parent bf0eca3546
commit 71d2bb07f1
8 changed files with 97 additions and 12 deletions
+12
View File
@@ -1,5 +1,6 @@
// REST-API fürs Webinterface: Devlogs öffentlich, Commits nur für den Admin
import { listDevlogs, listCommits } from '../db.js';
import { removeDevlog } from '../bot/devlog-archive.js';
import { getSessionUser, isAdmin } from './auth.js';
const PAGE_SIZE = 20;
@@ -29,6 +30,17 @@ export function registerApiRoutes(app) {
return { items: mapped, total, page, pageSize: PAGE_SIZE };
});
// Devlog aus dem Archiv löschen — nur Admin (z. B. alte Test-Posts)
app.delete('/api/devlogs/:id', async (request, reply) => {
const user = getSessionUser(request);
if (!user) return reply.code(401).send({ error: 'login required' });
if (!isAdmin(user)) return reply.code(403).send({ error: 'admin only' });
const deleted = await removeDevlog(request.params.id);
request.log.info(`Devlog ${request.params.id} per Web-UI gelöscht: ${deleted}`);
return { deleted };
});
// Commit-Feed — nur für den Admin (spiegelt den privaten #-gitea-Kanal)
app.get('/api/commits', async (request, reply) => {
const user = getSessionUser(request);