|
|
|
const express = require("express")
|
|
|
|
const router = express.Router()
|
|
|
|
const productController = require("../controllers/product")
|
|
|
|
const auth = require("../auth")
|
|
|
|
|
|
|
|
const { authenticateToken, verifyAdmin } = auth
|
|
|
|
|
|
|
|
// S50
|
|
|
|
// Create a product route (accessible only by isAdmin)
|
|
|
|
router.post("/products", authenticateToken, verifyAdmin, productController.createProduct)
|
|
|
|
|
|
|
|
// Retrieve all products route (accessible to both admin and normal user)
|
|
|
|
router.get("/all", productController.getAllProducts)
|
|
|
|
|
|
|
|
// Retrieve all active products route (accessible to both admin and normal user)
|
|
|
|
router.get("/active", productController.getActiveProducts)
|
|
|
|
|
|
|
|
// S51
|
|
|
|
// Retrieve a single product by ID
|
|
|
|
router.get('/products/:id', productController.getProductById);
|
|
|
|
|
|
|
|
// Update product route + admin verification
|
|
|
|
router.put('/products/:id', authenticateToken, verifyAdmin, productController.updateProduct);
|
|
|
|
|
|
|
|
// Archive a product
|
|
|
|
router.put('/products/:productId/archive', authenticateToken, verifyAdmin, productController.archiveProduct);
|
|
|
|
|
|
|
|
// Activate a product
|
|
|
|
router.put('/products/:productId/activate', authenticateToken, verifyAdmin, productController.activateProduct);
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = router
|