45 lines
2.8 KiB
TypeScript
45 lines
2.8 KiB
TypeScript
import { Router } from 'express';
|
|
import shopController from '../controllers/shop.controller';
|
|
import { authenticate } from '../middleware/auth.middleware';
|
|
import { requirePermission } from '../middleware/rbac.middleware';
|
|
|
|
const router = Router();
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Catalog Items
|
|
// ---------------------------------------------------------------------------
|
|
|
|
router.get('/items', authenticate, requirePermission('shop:view'), shopController.getItems.bind(shopController));
|
|
router.get('/items/:id', authenticate, requirePermission('shop:view'), shopController.getItemById.bind(shopController));
|
|
router.post('/items', authenticate, requirePermission('shop:manage_catalog'), shopController.createItem.bind(shopController));
|
|
router.patch('/items/:id', authenticate, requirePermission('shop:manage_catalog'), shopController.updateItem.bind(shopController));
|
|
router.delete('/items/:id', authenticate, requirePermission('shop:manage_catalog'), shopController.deleteItem.bind(shopController));
|
|
|
|
router.get('/categories', authenticate, requirePermission('shop:view'), shopController.getCategories.bind(shopController));
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Overview
|
|
// ---------------------------------------------------------------------------
|
|
|
|
router.get('/overview', authenticate, requirePermission('shop:view_overview'), shopController.getOverview.bind(shopController));
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Requests
|
|
// ---------------------------------------------------------------------------
|
|
|
|
router.get('/requests', authenticate, requirePermission('shop:approve_requests'), shopController.getRequests.bind(shopController));
|
|
router.get('/requests/my', authenticate, shopController.getMyRequests.bind(shopController));
|
|
router.get('/requests/:id', authenticate, shopController.getRequestById.bind(shopController));
|
|
router.post('/requests', authenticate, requirePermission('shop:create_request'), shopController.createRequest.bind(shopController));
|
|
router.patch('/requests/:id/status', authenticate, requirePermission('shop:approve_requests'), shopController.updateRequestStatus.bind(shopController));
|
|
router.delete('/requests/:id', authenticate, requirePermission('shop:approve_requests'), shopController.deleteRequest.bind(shopController));
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Linking requests to orders
|
|
// ---------------------------------------------------------------------------
|
|
|
|
router.post('/requests/:id/link', authenticate, requirePermission('shop:link_orders'), shopController.linkToOrder.bind(shopController));
|
|
router.delete('/requests/:id/link/:bestellungId', authenticate, requirePermission('shop:link_orders'), shopController.unlinkFromOrder.bind(shopController));
|
|
|
|
export default router;
|