feat: zentrales Pushover-Logging + neuer Admin-Tab Logs
This commit is contained in:
@@ -3,6 +3,7 @@ const fs = require('fs');
|
||||
const bcrypt = require('bcryptjs');
|
||||
const multer = require('multer');
|
||||
const db = require('../db');
|
||||
const { logPush } = require('../pushLog');
|
||||
const { authenticate, requireAdmin } = require('../middleware/auth');
|
||||
|
||||
const router = express.Router();
|
||||
@@ -191,16 +192,25 @@ router.post('/users/:id/test-push', authenticate, requireAdmin, async (req, res)
|
||||
const poCfg = db.prepare('SELECT user_key, app_token FROM pushover_settings WHERE user_id=?').get(user.id);
|
||||
if (!poCfg?.app_token || !poCfg?.user_key) return res.status(400).json({ error: 'Kein Pushover eingerichtet' });
|
||||
const { message = 'Wat is mit meinen Fische?' } = req.body;
|
||||
const title = '📣 DockStation';
|
||||
try {
|
||||
const r = await fetch('https://api.pushover.net/1/messages.json', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ token: poCfg.app_token, user: poCfg.user_key, title: '📣 DockStation', message, priority: 0 }),
|
||||
body: JSON.stringify({ token: poCfg.app_token, user: poCfg.user_key, title, message, priority: 0 }),
|
||||
});
|
||||
const d = await r.json();
|
||||
if (d.status === 1) res.json({ ok: true });
|
||||
else res.status(500).json({ error: d.errors?.join(', ') || 'Pushover-Fehler' });
|
||||
} catch(e) { res.status(500).json({ error: e.message }); }
|
||||
if (d.status === 1) {
|
||||
logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test' });
|
||||
res.json({ ok: true });
|
||||
} else {
|
||||
logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test', success: false });
|
||||
res.status(500).json({ error: d.errors?.join(', ') || 'Pushover-Fehler' });
|
||||
}
|
||||
} catch(e) {
|
||||
logPush({ userId: user.id, title, message, priority: 0, source: 'admin-test', success: false });
|
||||
res.status(500).json({ error: e.message });
|
||||
}
|
||||
});
|
||||
|
||||
// ── WebDAV / Synology NAS Einstellungen ───────────────────────────────────
|
||||
@@ -500,4 +510,18 @@ router.get('/disk-analysis', authenticate, requireAdmin, (req, res) => {
|
||||
res.json({ locations: result, tmpFiles, nodeModulesMb: fmt(nodeSize), bigFiles: bigFiles.slice(0,20) });
|
||||
});
|
||||
|
||||
// GET /push-logs – Übersicht aller verschickten Pushover-Nachrichten (Admin)
|
||||
router.get('/push-logs', authenticate, requireAdmin, (req, res) => {
|
||||
const limit = Math.min(parseInt(req.query.limit) || 200, 1000);
|
||||
const logs = db.prepare(`
|
||||
SELECT pl.id, pl.user_id, u.username, pl.title, pl.message, pl.priority,
|
||||
pl.source, pl.success, pl.created_at
|
||||
FROM push_log pl
|
||||
LEFT JOIN users u ON u.id = pl.user_id
|
||||
ORDER BY pl.id DESC
|
||||
LIMIT ?
|
||||
`).all(limit);
|
||||
res.json(logs);
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
Reference in New Issue
Block a user