Fix pronlems edit by admins
[vchess.git] / server / routes / problems.js
index 732ea71..746be9a 100644 (file)
@@ -1,21 +1,20 @@
 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');
 
 router.post("/problems", access.logged, access.ajax, (req,res) => {
-  if (ProblemModel.checkProblem(req.body.prob))
-  {
-    const problem =
-    {
+  if (ProblemModel.checkProblem(req.body.prob)) {
+    const problem = {
       vid: req.body.prob.vid,
       fen: req.body.prob.fen,
       uid: req.userId,
       instruction: sanitizeHtml(req.body.prob.instruction),
       solution: sanitizeHtml(req.body.prob.solution),
     };
-    ProblemModel.create(problem, (err,ret) => {
-      res.json(err || {id:ret.pid});
+    ProblemModel.create(problem, (err, ret) => {
+      res.json(err || ret);
     });
   }
   else
@@ -23,28 +22,27 @@ router.post("/problems", access.logged, access.ajax, (req,res) => {
 });
 
 router.get("/problems", access.ajax, (req,res) => {
-  const probId = req.query["pid"];
-  if (probId && probId.match(/^[0-9]+$/))
-  {
-    ProblemModel.getOne(req.query["pid"], (err,problem) => {
+  const probId = req.query["id"];
+  const cursor = req.query["cursor"];
+  if (!!probId && !!probId.match(/^[0-9]+$/)) {
+    ProblemModel.getOne(probId, (err, problem) => {
       res.json(err || {problem: problem});
     });
-  }
-  else
-  {
-    ProblemModel.getAll((err,problems) => {
-      res.json(err || {problems:problems});
+  } else if (!!cursor && !!cursor.match(/^[0-9]+$/)) {
+    const onlyMine = (req.query["mode"] == "mine");
+    const uid = parseInt(req.query["uid"]);
+    ProblemModel.getNext(uid, onlyMine, cursor, (err, problems) => {
+      res.json(err || { problems: problems });
     });
   }
 });
 
 router.put("/problems", access.logged, access.ajax, (req,res) => {
   let obj = req.body.prob;
-  if (ProblemModel.checkProblem(obj))
-  {
+  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({});
 });
@@ -52,7 +50,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({});
 });