89 lines
3.0 KiB
JavaScript
89 lines
3.0 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.pagesAdminRouter = void 0;
|
|
const express_1 = require("express");
|
|
const client_1 = require("@prisma/client");
|
|
const pages_service_1 = require("./pages.service");
|
|
const pages_schemas_1 = require("./pages.schemas");
|
|
const validate_1 = require("../../middleware/validate");
|
|
const auth_middleware_1 = require("../../middleware/auth.middleware");
|
|
const rbac_middleware_1 = require("../../middleware/rbac.middleware");
|
|
const ADMIN_ROLES = [client_1.UserRole.SUPER_ADMIN, client_1.UserRole.INFLUENCE_ADMIN, client_1.UserRole.MAP_ADMIN];
|
|
const router = (0, express_1.Router)();
|
|
exports.pagesAdminRouter = router;
|
|
router.use(auth_middleware_1.authenticate);
|
|
router.use((0, rbac_middleware_1.requireRole)(...ADMIN_ROLES));
|
|
// POST /api/pages/sync — sync MkDocs overrides (must be before /:id routes)
|
|
router.post('/sync', async (_req, res, next) => {
|
|
try {
|
|
const result = await pages_service_1.pagesService.syncOverrides();
|
|
res.json(result);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// POST /api/pages/validate — validate and repair MkDocs exports
|
|
router.post('/validate', async (_req, res, next) => {
|
|
try {
|
|
const result = await pages_service_1.pagesService.validateExports();
|
|
res.json(result);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// GET /api/pages — list landing pages with pagination/filters
|
|
router.get('/', (0, validate_1.validate)(pages_schemas_1.listLandingPagesSchema, 'query'), async (req, res, next) => {
|
|
try {
|
|
const result = await pages_service_1.pagesService.findAll(req.query);
|
|
res.json(result);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// GET /api/pages/:id — get single landing page
|
|
router.get('/:id', async (req, res, next) => {
|
|
try {
|
|
const id = req.params.id;
|
|
const page = await pages_service_1.pagesService.findById(id);
|
|
res.json(page);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// POST /api/pages — create landing page
|
|
router.post('/', (0, validate_1.validate)(pages_schemas_1.createLandingPageSchema), async (req, res, next) => {
|
|
try {
|
|
const page = await pages_service_1.pagesService.create(req.body);
|
|
res.status(201).json(page);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// PUT /api/pages/:id — update landing page
|
|
router.put('/:id', (0, validate_1.validate)(pages_schemas_1.updateLandingPageSchema), async (req, res, next) => {
|
|
try {
|
|
const id = req.params.id;
|
|
const page = await pages_service_1.pagesService.update(id, req.body);
|
|
res.json(page);
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
// DELETE /api/pages/:id — delete landing page
|
|
router.delete('/:id', async (req, res, next) => {
|
|
try {
|
|
const id = req.params.id;
|
|
await pages_service_1.pagesService.delete(id);
|
|
res.status(204).send();
|
|
}
|
|
catch (err) {
|
|
next(err);
|
|
}
|
|
});
|
|
//# sourceMappingURL=pages-admin.routes.js.map
|