42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const categoryController = require('../controllers/category.controller');
|
|
const authMiddleware = require('../middleware/auth.middleware');
|
|
|
|
/**
|
|
* @route GET /api/categories
|
|
* @desc Get all active categories (guest sees only guest-accessible, auth sees all)
|
|
* @access Public (optional auth)
|
|
*/
|
|
router.get('/', authMiddleware.optionalAuth, categoryController.getAllCategories);
|
|
|
|
/**
|
|
* @route GET /api/categories/:id
|
|
* @desc Get category details with question preview and stats
|
|
* @access Public (optional auth, some categories require auth)
|
|
*/
|
|
router.get('/:id', authMiddleware.optionalAuth, categoryController.getCategoryById);
|
|
|
|
/**
|
|
* @route POST /api/categories
|
|
* @desc Create new category
|
|
* @access Private/Admin
|
|
*/
|
|
router.post('/', authMiddleware.verifyToken, authMiddleware.isAdmin, categoryController.createCategory);
|
|
|
|
/**
|
|
* @route PUT /api/categories/:id
|
|
* @desc Update category
|
|
* @access Private/Admin
|
|
*/
|
|
router.put('/:id', authMiddleware.verifyToken, authMiddleware.isAdmin, categoryController.updateCategory);
|
|
|
|
/**
|
|
* @route DELETE /api/categories/:id
|
|
* @desc Delete category (soft delete)
|
|
* @access Private/Admin
|
|
*/
|
|
router.delete('/:id', authMiddleware.verifyToken, authMiddleware.isAdmin, categoryController.deleteCategory);
|
|
|
|
module.exports = router;
|