mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
40 lines
1.9 KiB
JavaScript
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; |