58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const auth = require('../../../src/middleware/auth');
|
|
const {
|
|
checkPluginPermission,
|
|
checkPluginSubscription,
|
|
scopeToSite,
|
|
pluginRateLimit
|
|
} = require('../../../src/middleware/pluginAuth');
|
|
|
|
// Import plugin-specific route modules
|
|
const campaignsRoutes = require('./campaigns');
|
|
const formsRoutes = require('./forms');
|
|
const responsesRoutes = require('./responses');
|
|
const groupsRoutes = require('./groups');
|
|
|
|
// Mount plugin-specific routes
|
|
router.use('/campaigns', campaignsRoutes);
|
|
router.use('/forms', formsRoutes);
|
|
router.use('/responses', responsesRoutes);
|
|
router.use('/groups', groupsRoutes);
|
|
|
|
// Plugin health check endpoint
|
|
router.get('/health', (req, res) => {
|
|
res.json({
|
|
success: true,
|
|
plugin: 'voting',
|
|
version: '1.0.0',
|
|
status: 'healthy',
|
|
timestamp: new Date().toISOString()
|
|
});
|
|
});
|
|
|
|
// Plugin info endpoint
|
|
router.get('/info', (req, res) => {
|
|
res.json({
|
|
success: true,
|
|
plugin: {
|
|
name: 'voting',
|
|
displayName: 'Voting Plugin',
|
|
version: '1.0.0',
|
|
description: 'Comprehensive voting system for HOA board elections, decision-making, and community surveys',
|
|
permissions: [
|
|
'view_campaigns',
|
|
'create_campaigns',
|
|
'edit_campaigns',
|
|
'delete_campaigns',
|
|
'view_results',
|
|
'manage_forms',
|
|
'export_data',
|
|
'view_analytics'
|
|
]
|
|
}
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|
|
|