X-Git-Url: https://git.auder.net/?a=blobdiff_plain;f=server%2Froutes%2Fproblems.js;h=5f4dd401d184acdb16fca9f66252bbbce84689db;hb=2bb4666e276e837add0958554a11b38f7f4d9357;hp=8a82462eb13a985c2906f4ccfce26a509a6841f4;hpb=68e19a449db7a12e0a168e99cd750d985c983ba1;p=vchess.git diff --git a/server/routes/problems.js b/server/routes/problems.js index 8a82462e..5f4dd401 100644 --- a/server/routes/problems.js +++ b/server/routes/problems.js @@ -1,7 +1,17 @@ let router = require("express").Router(); const access = require("../utils/access"); +const params = require("../config/parameters"); const ProblemModel = require("../models/Problem"); -const sanitizeHtml = require('sanitize-html'); +const sanitizeHtml_pkg = require('sanitize-html'); + +const allowedTags = [ + 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'li', 'b', + 'i', 'strong', 'em', 'strike', 'code', 'hr', 'br', 'div', 'table', + 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre' +]; +function sanitizeHtml(text) { + return sanitizeHtml_pkg(text, { allowedTags: allowedTags }); +} router.post("/problems", access.logged, access.ajax, (req,res) => { if (ProblemModel.checkProblem(req.body.prob)) { @@ -21,14 +31,16 @@ router.post("/problems", access.logged, access.ajax, (req,res) => { }); router.get("/problems", access.ajax, (req,res) => { - const probId = req.query["pid"]; + const probId = req.query["id"]; const cursor = req.query["cursor"]; if (!!probId && !!probId.match(/^[0-9]+$/)) { - ProblemModel.getOne(req.query["pid"], (err, problem) => { + ProblemModel.getOne(probId, (err, problem) => { res.json(err || {problem: problem}); }); } else if (!!cursor && !!cursor.match(/^[0-9]+$/)) { - ProblemModel.getNext(cursor, (err, problems) => { + const onlyMine = (req.query["mode"] == "mine"); + const uid = parseInt(req.query["uid"]); + ProblemModel.getNext(uid, onlyMine, cursor, (err, problems) => { res.json(err || { problems: problems }); }); } @@ -39,7 +51,7 @@ router.put("/problems", access.logged, access.ajax, (req,res) => { if (ProblemModel.checkProblem(obj)) { obj.instruction = sanitizeHtml(obj.instruction); obj.solution = sanitizeHtml(obj.solution); - ProblemModel.safeUpdate(obj, req.userId); + ProblemModel.safeUpdate(obj, req.userId, params.devs); } res.json({}); }); @@ -47,7 +59,7 @@ router.put("/problems", access.logged, access.ajax, (req,res) => { router.delete("/problems", access.logged, access.ajax, (req,res) => { const pid = req.query.id; if (pid.toString().match(/^[0-9]+$/)) - ProblemModel.safeRemove(pid, req.userId); + ProblemModel.safeRemove(pid, req.userId, params.devs); res.json({}); });