import { hashAPIPath } from "../../../actions/core/hash"; import nextConnect from "next-connect"; import { getSession } from "next-auth/react"; import { respondError, respondSuccess } from "../middleware/apiResponse"; const ApiProxy = nextConnect(); ApiProxy.get(async (req, res) => { const session = await getSession({ req }); if (!session) { return respondError(res, { status: 401, code: "UNAUTHENTICATED", message: "Authentication required" }); } const rawQueryPath = req.query.path; const queryPath = typeof rawQueryPath === "string" ? rawQueryPath.split("?")[0] : rawQueryPath; const allowedPrefix = [ "/api/endpoint/getportallogin_api", "/api/endpoint/deletemyrepresentations_api", "/api/endpoint/deletewatchedcases_api", "/api/file/upload", "/api/file/uploadsinglefile", "/api/file/deleteblobcase", "/api/file/deleteblobrep", "/api/file/createrepcompletemessage_api", "/api/file/createappealcompletemessage_api", "/api/file/generatepdf", "/api/file/generateappealpdf" ]; if ( typeof queryPath !== "string" || queryPath.length === 0 || !queryPath.startsWith("/api/") || !allowedPrefix.some((prefix) => queryPath.startsWith(prefix)) || queryPath.includes("/api/endpoint/gethash_api") ) { return respondError(res, { status: 400, code: "INVALID_HASH_PATH", message: "Invalid path for hash generation" }); } return respondSuccess(res, { hash: hashAPIPath(rawQueryPath) }); }); export default ApiProxy;