- checkPlanLimits: blocks writes when subscription inactive - checkCfdiLimit: enforces per-plan CFDI count limits - requireFeature: gates reportes/alertas/calendario by plan tier - All cached with 5-min TTL, invalidated via PM2 messaging Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
24 lines
980 B
TypeScript
24 lines
980 B
TypeScript
import { Router, type IRouter } from 'express';
|
|
import { authenticate } from '../middlewares/auth.middleware.js';
|
|
import { tenantMiddleware } from '../middlewares/tenant.middleware.js';
|
|
import { checkPlanLimits } from '../middlewares/plan-limits.middleware.js';
|
|
import { requireFeature } from '../middlewares/feature-gate.middleware.js';
|
|
import * as alertasController from '../controllers/alertas.controller.js';
|
|
|
|
const router: IRouter = Router();
|
|
|
|
router.use(authenticate);
|
|
router.use(tenantMiddleware);
|
|
router.use(checkPlanLimits);
|
|
router.use(requireFeature('alertas'));
|
|
|
|
router.get('/', alertasController.getAlertas);
|
|
router.get('/stats', alertasController.getStats);
|
|
router.post('/mark-all-read', alertasController.markAllAsRead);
|
|
router.get('/:id', alertasController.getAlerta);
|
|
router.post('/', alertasController.createAlerta);
|
|
router.patch('/:id', alertasController.updateAlerta);
|
|
router.delete('/:id', alertasController.deleteAlerta);
|
|
|
|
export { router as alertasRoutes };
|