/*********************************************************************************************************************************************************************** * File Name: admin.routes.js * Type of Program: Router * Description: Protected routes accessible by admin only — full control. * * Route Map: * Dashboard : GET /api/admin/dashboard * Users : /api/admin/users/* * Groups : /api/admin/groups/* * Assets : /api/admin/assets/* * * Guards: authenticate → requireAdmin() → adminLimiter * * Author: rgrgogu and Kenneth Obsequio (@lash0000) * Date Created: Oct. 6, 2025 * Date Modified: May 5, 2026 * Latest: May 19, 2026 ***********************************************************************************************************************************************************************/ const express = require('express'); const router = express.Router(); const { authenticate } = require('../../middleware/auth.middleware'); const { requireAdmin } = require('../../middleware/rbac.middleware'); const { adminLimiter } = require('../../middleware/rateLimiter.middleware'); const dashboardRoutes = require('./dashboard.routes'); const usersRoutes = require('./users.routes'); const groupsRoutes = require('./groups.routes'); const assetsRoutes = require('./assets.routes'); const taskRoutes = require('./task.routes'); // ── Guards — applied to ALL admin routes ────────────────────────────────────── router.use(authenticate, requireAdmin(), adminLimiter); // ── Mount ───────────────────────────────────────────────────────────────────── router.use('/dashboard', dashboardRoutes); router.use('/users', usersRoutes); router.use('/groups', groupsRoutes); router.use('/assets', assetsRoutes); router.use('/task-lists', taskRoutes); module.exports = router;