plugin-financials/routes/index.js
2025-11-03 13:51:33 +02:00

90 lines
No EOL
2.9 KiB
JavaScript

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;