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;