feat: zentrales Pushover-Logging + neuer Admin-Tab Logs

This commit is contained in:
2026-07-16 00:18:56 +02:00
parent 7e6ea9b010
commit 2b2a2dce2d
11 changed files with 213 additions and 26 deletions

View File

@@ -1,14 +1,17 @@
const express = require('express');
const db = require('../../db');
const { logPush } = require('../../pushLog');
const { authenticate } = require('../../middleware/auth');
const router = express.Router();
// ── Pushover Helper ───────────────────────────────────────────────────────────
async function sendPushover(userKey, appToken, title, message, opts = {}) {
async function sendPushover(userKey, appToken, title, message, opts = {}, userId = null) {
let priority = 0;
try {
const params = { token: appToken, user: userKey, title, message };
if (opts.retry && opts.expire) {
params.priority = 2;
priority = 2;
params.retry = opts.retry;
params.expire = opts.expire;
}
@@ -17,7 +20,10 @@ async function sendPushover(userKey, appToken, title, message, opts = {}) {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams(params),
});
} catch {}
logPush({ userId, title, message, priority, source: 'nachrichten' });
} catch {
logPush({ userId, title, message, priority, source: 'nachrichten', success: false });
}
}
// ── Public Keys ───────────────────────────────────────────────────────────────
@@ -137,7 +143,7 @@ router.post('/messages/:userId', authenticate, async (req, res) => {
`).get(recipId);
if (!presence) {
await sendPushover(pushover.user_key, pushover.app_token, 'DickenDock', `Neue Nachricht von ${senderName}`,
{ retry: pushover.retry, expire: pushover.expire });
{ retry: pushover.retry, expire: pushover.expire }, recipId);
}
}
@@ -203,7 +209,7 @@ router.post('/pushover/test', authenticate, async (req, res) => {
? `🚨 Emergency-Test! Wiederholt alle ${row.retry}s für max. ${row.expire}s. Bitte in Pushover quittieren.`
: 'Pushover-Verbindung erfolgreich! 🎉';
await sendPushover(row.user_key, row.app_token, 'DickenDock', msg,
useEmergency ? { retry: row.retry, expire: row.expire } : {});
useEmergency ? { retry: row.retry, expire: row.expire } : {}, req.user.id);
res.json({ ok: true });
});