v0.8.0 add menu items + vapid key

This commit is contained in:
2026-03-12 13:03:04 -04:00
parent 5697e3a59c
commit 25a1343838
10 changed files with 289 additions and 127 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "jama-backend",
"version": "0.7.9",
"version": "0.8.0",
"description": "TeamChat backend server",
"main": "src/index.js",
"scripts": {

View File

@@ -78,6 +78,21 @@ router.post('/subscribe', authMiddleware, (req, res) => {
res.json({ success: true });
});
// POST /api/push/generate-vapid — admin: generate (or regenerate) VAPID keys
router.post('/generate-vapid', authMiddleware, (req, res) => {
if (req.user.role !== 'admin') return res.status(403).json({ error: 'Admins only' });
const db = getDb();
const keys = webpush.generateVAPIDKeys();
const ins = db.prepare("INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = ?");
ins.run('vapid_public', keys.publicKey, keys.publicKey);
ins.run('vapid_private', keys.privateKey, keys.privateKey);
// Reinitialise webpush with new keys immediately
webpush.setVapidDetails('mailto:admin@jama.local', keys.publicKey, keys.privateKey);
vapidPublicKey = keys.publicKey;
console.log('[Push] VAPID keys regenerated by admin');
res.json({ publicKey: keys.publicKey });
});
// POST /api/push/unsubscribe — remove subscription
router.post('/unsubscribe', authMiddleware, (req, res) => {
const { endpoint } = req.body;