42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const { requireAuth } = require('../middleware/auth');
|
|
const { checkGracePeriod } = require('../middleware/gracePeriod');
|
|
const { getAlertsForUser, markAlertRead } = require('../services/alertService');
|
|
|
|
const router = express.Router();
|
|
|
|
const PAID_TIERS = new Set(['analyst', 'desk']);
|
|
|
|
router.get('/', requireAuth, checkGracePeriod, async (req, res) => {
|
|
if (!PAID_TIERS.has(req.user.tier)) {
|
|
return res.status(403).json({ error: 'Alerts are available on Analyst and Desk tiers' });
|
|
}
|
|
|
|
try {
|
|
const result = await getAlertsForUser(req.user.id);
|
|
return res.json(result);
|
|
} catch (err) {
|
|
console.error('[VYNDR] Alerts error:', err.message);
|
|
return res.status(503).json({ error: 'Alerts temporarily unavailable' });
|
|
}
|
|
});
|
|
|
|
router.patch('/:id/read', requireAuth, checkGracePeriod, async (req, res) => {
|
|
if (!PAID_TIERS.has(req.user.tier)) {
|
|
return res.status(403).json({ error: 'Alerts are available on Analyst and Desk tiers' });
|
|
}
|
|
|
|
try {
|
|
const result = await markAlertRead(req.params.id, req.user.id);
|
|
if (!result) {
|
|
return res.status(404).json({ error: 'Alert not found' });
|
|
}
|
|
return res.json(result);
|
|
} catch (err) {
|
|
console.error('[VYNDR] Alert update error:', err.message);
|
|
return res.status(503).json({ error: 'Alert update failed' });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|