Admin: Test-Push-Button pro User (nur sichtbar wenn Pushover eingerichtet)
This commit is contained in:
@@ -170,6 +170,25 @@ router.put('/users/:id/hidden', authenticate, requireAdmin, (req, res) => {
|
||||
res.json({ hidden: newHidden });
|
||||
});
|
||||
|
||||
// Test-Pushover an beliebigen User senden
|
||||
router.post('/users/:id/test-push', authenticate, requireAdmin, async (req, res) => {
|
||||
const user = db.prepare('SELECT * FROM users WHERE id=?').get(req.params.id);
|
||||
if (!user) return res.status(404).json({ error: 'Nicht gefunden' });
|
||||
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;
|
||||
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 }),
|
||||
});
|
||||
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 }); }
|
||||
});
|
||||
|
||||
// ── WebDAV / Synology NAS Einstellungen ───────────────────────────────────
|
||||
router.get('/webdav', authenticate, requireAdmin, (req, res) => {
|
||||
const get = k => db.prepare('SELECT value FROM admin_settings WHERE key=?').get(k)?.value || '';
|
||||
|
||||
@@ -2439,6 +2439,19 @@ function UserManagement({ toast }) {
|
||||
</div>
|
||||
{/* Aktions-Buttons */}
|
||||
<div style={{display:'flex',gap:4,flexShrink:0,flexWrap:'wrap',justifyContent:'flex-end'}}>
|
||||
{!!u.has_pushover && (
|
||||
<button
|
||||
onClick={async () => {
|
||||
try {
|
||||
await api(`/admin/users/${u.id}/test-push`, { method:'POST', body:{ message:'Wat is mit meinen Fische?' } });
|
||||
toast(`Push an ${u.username} gesendet ✓`);
|
||||
} catch(e) { toast(e.message, 'error'); }
|
||||
}}
|
||||
title={`Test-Push an ${u.username}`}
|
||||
style={{...S.btn('#ff6b9d',true), fontSize:11, padding:'4px 8px'}}>
|
||||
🔔
|
||||
</button>
|
||||
)}
|
||||
<button onClick={()=>{setResetId(u.id);setResetPw('');}}
|
||||
style={{...S.btn('#ffe66d',true),fontSize:10,padding:'4px 8px'}}>🔑</button>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user