Files
starr-philproperties/routes/admin/admin.routes.js
T
2026-05-20 13:22:29 +08:00

40 lines
1.9 KiB
JavaScript

/***********************************************************************************************************************************************************************
* 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
* Date Created: Oct. 6, 2025
***********************************************************************************************************************************************************************/
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 coursesRoutes = require('./courses.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('/courses', coursesRoutes);
module.exports = router;