listmonk sync
This commit is contained in:
@@ -67,4 +67,45 @@ router.get('/nocodb-urls', (req, res) => {
|
||||
});
|
||||
});
|
||||
|
||||
// Get Listmonk URLs for admin panel
|
||||
router.get('/listmonk-urls', (req, res) => {
|
||||
console.log('Admin Listmonk URLs endpoint called');
|
||||
|
||||
// Construct Listmonk URLs using the public domain
|
||||
// Since this route is protected by requireAdmin middleware,
|
||||
// we know the user is an admin
|
||||
const domain = process.env.DOMAIN;
|
||||
let listmonkBaseUrl = null;
|
||||
|
||||
if (domain) {
|
||||
// Construct the public Listmonk URL using the domain
|
||||
// Format: https://listmonk.{domain}
|
||||
listmonkBaseUrl = `https://listmonk.${domain}`;
|
||||
}
|
||||
|
||||
const listmonkUrls = {
|
||||
baseUrl: listmonkBaseUrl,
|
||||
adminUrl: listmonkBaseUrl ? `${listmonkBaseUrl}/admin` : null,
|
||||
listsUrl: listmonkBaseUrl ? `${listmonkBaseUrl}/admin/lists` : null,
|
||||
campaignsUrl: listmonkBaseUrl ? `${listmonkBaseUrl}/admin/campaigns` : null,
|
||||
subscribersUrl: listmonkBaseUrl ? `${listmonkBaseUrl}/admin/subscribers` : null,
|
||||
settingsUrl: listmonkBaseUrl ? `${listmonkBaseUrl}/admin/settings` : null
|
||||
};
|
||||
|
||||
console.log('Returning Listmonk URLs for admin:', {
|
||||
domain: domain,
|
||||
baseUrl: listmonkBaseUrl,
|
||||
hasAdminUrl: !!listmonkUrls.adminUrl,
|
||||
hasListsUrl: !!listmonkUrls.listsUrl,
|
||||
hasCampaignsUrl: !!listmonkUrls.campaignsUrl,
|
||||
hasSubscribersUrl: !!listmonkUrls.subscribersUrl,
|
||||
hasSettingsUrl: !!listmonkUrls.settingsUrl
|
||||
});
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
listmonkUrls
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
@@ -14,6 +14,7 @@ const geocodingRoutes = require('../routes/geocoding'); // Existing geocoding ro
|
||||
const shiftsRoutes = require('./shifts');
|
||||
const externalDataRoutes = require('./external');
|
||||
const cutsRoutes = require('./cuts');
|
||||
const listmonkRoutes = require('./listmonk');
|
||||
|
||||
module.exports = (app) => {
|
||||
// Health check (no auth)
|
||||
@@ -63,6 +64,9 @@ module.exports = (app) => {
|
||||
// Cuts routes (add after other protected routes)
|
||||
app.use('/api/cuts', requireAuth, cutsRoutes);
|
||||
|
||||
// Listmonk routes (authenticated)
|
||||
app.use('/api/listmonk', requireAuth, listmonkRoutes);
|
||||
|
||||
// Admin routes
|
||||
app.get('/admin.html', requireAdmin, (req, res) => {
|
||||
res.sendFile(path.join(__dirname, '../public', 'admin.html'));
|
||||
|
||||
25
map/app/routes/listmonk.js
Normal file
25
map/app/routes/listmonk.js
Normal file
@@ -0,0 +1,25 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const listmonkController = require('../controllers/listmonkController');
|
||||
const { requireAuth, requireAdmin } = require('../middleware/auth');
|
||||
|
||||
// Get sync status (available to all authenticated users)
|
||||
router.get('/status', requireAuth, listmonkController.getSyncStatus);
|
||||
|
||||
// Test connection (admin only)
|
||||
router.get('/test-connection', requireAdmin, listmonkController.testConnection);
|
||||
|
||||
// Get list statistics (admin only)
|
||||
router.get('/stats', requireAdmin, listmonkController.getListStats);
|
||||
|
||||
// Bulk sync operations (admin only)
|
||||
router.post('/sync/locations', requireAdmin, listmonkController.syncAllLocations);
|
||||
|
||||
router.post('/sync/users', requireAdmin, listmonkController.syncAllUsers);
|
||||
|
||||
router.post('/sync/all', requireAdmin, listmonkController.syncAll);
|
||||
|
||||
// Reinitialize lists (admin only)
|
||||
router.post('/reinitialize', requireAdmin, listmonkController.reinitializeLists);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user