const express = require('express'); const router = express.Router(); // Import middleware const auth = require('../../../src/middleware/auth'); const pluginAuth = require('../../../src/middleware/pluginAuth'); // Import sub-routers const accountsRoutes = require('./accounts'); const budgetsRoutes = require('./budgets'); const expensesRoutes = require('./expenses'); const revenueRoutes = require('./revenue'); const reportsRoutes = require('./reports'); const analyticsRoutes = require('./analytics'); const transactionsRoutes = require('./transactions'); const taxRoutes = require('./tax'); const balancesRoutes = require('./balances'); const invoicesRoutes = require('./invoices'); const ledgerRoutes = require('./ledger'); const reconciliationRoutes = require('./reconciliation'); const assessmentsRoutes = require('./assessments'); // Apply common middleware to all plugin routes // Standard auth to populate req.user (required for created_by fields) router.use(auth.authenticateToken); // Lightweight plugin checks (permit-all for now but ensures future extensibility) // Note: We intentionally avoid rate-limiting until configured router.use(pluginAuth.checkPluginSubscription('financials')); // Health and info endpoints router.get('/health', (req, res) => { res.json({ success: true, plugin: 'financials', version: '1.0.0', status: 'healthy', timestamp: new Date().toISOString(), message: 'Financials plugin is working!' }); }); router.get('/info', (req, res) => { res.json({ success: true, plugin: { name: 'financials', displayName: 'Financials Plugin', version: '1.0.0', description: 'Comprehensive financial management including accounting, budgeting, expense tracking, and financial reporting', permissions: [ 'view_financials', 'manage_accounts', 'create_budgets', 'generate_reports', 'manage_expenses', 'manage_revenue', 'view_analytics', 'manage_tax_settings', 'approve_transactions' ], features: [ 'Chart of Accounts', 'Budget Management', 'Expense Tracking', 'Revenue Management', 'Financial Reports', 'Analytics Dashboard', 'Transaction Management', 'Tax Management' ] } }); }); // Mount sub-routers router.use('/accounts', accountsRoutes); router.use('/budgets', budgetsRoutes); router.use('/expenses', expensesRoutes); router.use('/revenue', revenueRoutes); router.use('/reports', reportsRoutes); router.use('/analytics', analyticsRoutes); router.use('/transactions', transactionsRoutes); router.use('/tax', taxRoutes); router.use('/balances', balancesRoutes); router.use('/invoices', invoicesRoutes); router.use('/ledger', ledgerRoutes); router.use('/reconciliation', reconciliationRoutes); router.use('/assessments', assessmentsRoutes); module.exports = router;