28 lines
1.9 KiB
TypeScript
28 lines
1.9 KiB
TypeScript
import { Router } from 'express';
|
|
import vehicleController from '../controllers/vehicle.controller';
|
|
import { authenticate } from '../middleware/auth.middleware';
|
|
import { requirePermission } from '../middleware/rbac.middleware';
|
|
|
|
const router = Router();
|
|
|
|
// ── Read-only (any authenticated user) ───────────────────────────────────────
|
|
|
|
router.get('/', authenticate, vehicleController.listVehicles.bind(vehicleController));
|
|
router.get('/stats', authenticate, vehicleController.getStats.bind(vehicleController));
|
|
router.get('/alerts', authenticate, vehicleController.getAlerts.bind(vehicleController));
|
|
router.get('/:id', authenticate, vehicleController.getVehicle.bind(vehicleController));
|
|
router.get('/:id/wartung', authenticate, vehicleController.getWartung.bind(vehicleController));
|
|
|
|
// ── Write — kommandant+ ──────────────────────────────────────────────────────
|
|
|
|
router.post('/', authenticate, requirePermission('vehicles:write'), vehicleController.createVehicle.bind(vehicleController));
|
|
router.patch('/:id', authenticate, requirePermission('vehicles:write'), vehicleController.updateVehicle.bind(vehicleController));
|
|
router.delete('/:id', authenticate, requirePermission('vehicles:delete'), vehicleController.deleteVehicle.bind(vehicleController));
|
|
|
|
// ── Status + maintenance log — gruppenfuehrer+ ──────────────────────────────
|
|
|
|
router.patch('/:id/status', authenticate, requirePermission('vehicles:status'), vehicleController.updateVehicleStatus.bind(vehicleController));
|
|
router.post('/:id/wartung', authenticate, requirePermission('vehicles:status'), vehicleController.addWartung.bind(vehicleController));
|
|
|
|
export default router;
|