Files
Zumri-Backend/app/routes/docs.routes.js
Sathira Sri Sathara b6b345f245 feat: Implement Phase 2 cross-cutting services with email and notification enhancements
- Refactor email verification and password reset utilities to use new email service.
- Introduce email delivery queue and notification delivery model for better tracking.
- Enhance file validation and storage services for improved security and ownership management.
- Add cron job for cleaning inactive notifications with retention policy.
- Update document worker to handle document generation and storage more efficiently.
- Implement logging improvements in activity and log workers.
- Create comprehensive documentation for new API endpoints and services.
- Add unit tests for file validation and notification policies to ensure robustness.
2026-09-03 14:22:34 +05:30

56 lines
1.5 KiB
JavaScript

/**
* Markdown Docs Route
*/
const express = require("express");
const fs = require("fs");
const path = require("path");
const docsSession = require("../middleware/docsSession.middleware");
const { sensitiveLimiter } = require("../middleware/rateLimit.middleware");
const router = express.Router();
const DOCS_DIR = path.join(__dirname, "../../Documentation");
router.get("/markdown-files", docsSession, (req, res) => {
fs.readdir(DOCS_DIR, (err, files) => {
if (err) {
return res.status(500).json({
success: false,
message: "Failed to read documentation folder",
error: err.message,
});
}
const mdFiles = files.filter((file) => file.endsWith(".md"));
res.json({
success: true,
data: mdFiles,
});
});
});
router.get("/view/:file", docsSession, (req, res) => {
const filePath = path.join(DOCS_DIR, req.params.file);
if (!req.params.file.endsWith(".md")) {
return res.status(400).send("Only markdown files allowed");
}
// basic protection against path traversal
if (!filePath.startsWith(DOCS_DIR)) {
return res.status(400).send("Invalid path");
}
res.sendFile(filePath);
});
// Docs login (simple)
router.post("/login", sensitiveLimiter, (_req, res) => res.status(410).json({ success: false, error: { code: "DEPRECATED", message: "Use an authenticated ADMIN or SUPER_ADMIN session" } }));
router.post("/logout", (_req, res) => res.status(410).json({ success: false, error: { code: "DEPRECATED", message: "Use the authentication logout endpoint" } }));
module.exports = router;