diff --git a/backend/src/db.js b/backend/src/db.js index 24083a6..ee398a5 100644 --- a/backend/src/db.js +++ b/backend/src/db.js @@ -252,6 +252,8 @@ if (!userCols2.includes('preferences')) db.exec("ALTER TABLE users ADD COLUMN preferences TEXT DEFAULT NULL"); if (!userCols2.includes('last_active_at')) db.exec("ALTER TABLE users ADD COLUMN last_active_at DATETIME DEFAULT NULL"); +if (!userCols2.includes('hidden')) + db.exec("ALTER TABLE users ADD COLUMN hidden INTEGER NOT NULL DEFAULT 0"); // ── Login-Sicherheit ────────────────────────────────────────────────────────── // Spalten für Account-Lockout in users-Tabelle diff --git a/backend/src/routes/admin.js b/backend/src/routes/admin.js index aa88ff3..33b05af 100644 --- a/backend/src/routes/admin.js +++ b/backend/src/routes/admin.js @@ -32,7 +32,7 @@ router.post('/restore', authenticate, requireAdmin, upload.single('database'), ( // GET /api/admin/users – alle Benutzer mit Statistiken router.get('/users', authenticate, requireAdmin, (req, res) => { const users = db.prepare(` - SELECT u.id, u.username, u.role, u.created_at, u.last_active_at, + SELECT u.id, u.username, u.role, u.created_at, u.last_active_at, u.hidden, CASE WHEN p.user_id IS NOT NULL THEN 1 ELSE 0 END as has_pushover FROM users u LEFT JOIN pushover_settings p ON p.user_id = u.id @@ -160,4 +160,13 @@ router.get('/login-log', authenticate, requireAdmin, (req, res) => { `).all()); }); +// Toggle hidden +router.put('/users/:id/hidden', authenticate, requireAdmin, (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 newHidden = user.hidden ? 0 : 1; + db.prepare('UPDATE users SET hidden=? WHERE id=?').run(newHidden, user.id); + res.json({ hidden: newHidden }); +}); + module.exports = router; diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 7c2700e..b66ec87 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1259,7 +1259,7 @@ function ChangelogModal({ user, toast, onClose }) {
- {fmtDate(e.created_at)} + {typeof __BUILD_TIME__ !== 'undefined' && __BUILD_TIME__ ? __BUILD_TIME__ : fmtDate(e.created_at)} {isAdmin && ( +