TransHub_backend / routes /admin-weeks.js
linguabot's picture
Upload folder using huggingface_hub
50b3b25 verified
Raw
History Blame Contribute Delete
1.74 kB
const express = require('express');
const router = express.Router();
const { authenticateToken } = require('./auth');
// Require admin helper
const requireAdmin = (req, res, next) => {
const userRole = req.headers['user-role'] || req.body.role;
if (userRole !== 'admin') {
return res.status(403).json({ error: 'Admin access required' });
}
next();
};
router.put('/admin/weeks/:category/:week/visibility', authenticateToken, requireAdmin, async (req, res) => {
try {
const WeekBrief = require('../models/WeekBrief');
const category = (req.params.category === 'tutorial') ? 'tutorial' : 'weekly-practice';
const weekNumber = parseInt(req.params.week);
const { hidden } = req.body || {};
const updated = await WeekBrief.findOneAndUpdate(
{ category, weekNumber },
{ hidden: !!hidden },
{ upsert: true, new: true }
);
res.json({ success: true, week: updated });
} catch (error) {
console.error('Update week visibility error:', error);
res.status(500).json({ error: 'Failed to update week visibility' });
}
});
router.get('/admin/weeks/:category/:week/visibility', authenticateToken, requireAdmin, async (req, res) => {
try {
const WeekBrief = require('../models/WeekBrief');
const category = (req.params.category === 'tutorial') ? 'tutorial' : 'weekly-practice';
const weekNumber = parseInt(req.params.week);
const wb = await WeekBrief.findOne({ category, weekNumber });
res.json({ success: true, week: { category, weekNumber, hidden: !!(wb && wb.hidden) } });
} catch (error) {
console.error('Get week visibility error:', error);
res.status(500).json({ error: 'Failed to get week visibility' });
}
});
module.exports = router;