X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=server%2Froutes%2Fnews.js;h=e78020ef086d3fc62abc185ec85dba493f492e8e;hp=ed78456471b50ef54bc4c099c5424718b1a47b87;hb=a9e7935190d8fc112e674add05e86b8d0152e8df;hpb=604b951e4dc4647da9b251c5fff4ecb4c7b1b298 diff --git a/server/routes/news.js b/server/routes/news.js index ed784564..e78020ef 100644 --- a/server/routes/news.js +++ b/server/routes/news.js @@ -1,50 +1,55 @@ -// AJAX methods to get, create, update or delete a problem - let router = require("express").Router(); const access = require("../utils/access"); +const params = require("../config/parameters"); const NewsModel = require("../models/News"); const sanitizeHtml = require('sanitize-html'); -const devs = [1]; //hard-coded list of developers, allowed to post news -router.get("/news", (req,res) => { +router.post("/news", access.logged, access.ajax, (req,res) => { + if (params.devs.includes(req.userId)) { + const content = sanitizeHtml(req.body.news.content); + NewsModel.create(content, req.userId, (err, ret) => { + res.json(err || ret); + }); + } +}); + +router.get("/news", access.ajax, (req,res) => { const cursor = req.query["cursor"]; - if (!cursor.match(/^[0-9]+$/)) - return res.json({errmsg: "Bad cursor value"}); - NewsModel.getNext(cursor, (err,newsList) => { - res.json(err || {newsList:newsList}); - }); + if (!!cursor && !!cursor.match(/^[0-9]+$/)) { + NewsModel.getNext(cursor, (err, newsList) => { + res.json(err || { newsList: newsList }); + }); + } }); -router.post("/news", access.logged, access.ajax, (req,res) => { - if (!devs.includes(req.userId)) - return res.json({errmsg: "Not allowed to post"}); - const content = sanitizeHtml(req.body.news.content); - NewsModel.create(content, req.userId, (err,ret) => { - return res.json(err || {nid:ret.nid}); +router.get("/newsts", access.ajax, (req,res) => { + // Special query for footer: just return timestamp of last news + NewsModel.getTimestamp((err, ts) => { + res.json(err || { timestamp: !!ts ? ts.added : 0 }); }); }); router.put("/news", access.logged, access.ajax, (req,res) => { - if (!devs.includes(req.userId)) - return res.json({errmsg: "Not allowed to edit"}); let news = req.body.news; - if (!news.id.toString().match(/^[0-9]+$/)) - res.json({errmsg: "Bad news ID"}); - news.content = sanitizeHtml(news.content); - NewsModel.update(news, (err) => { - res.json(err || {}); - }); + if ( + params.devs.includes(req.userId) && + news.id.toString().match(/^[0-9]+$/) + ) { + news.content = sanitizeHtml(news.content); + NewsModel.update(news); + res.json({}); + } }); router.delete("/news", access.logged, access.ajax, (req,res) => { - if (!devs.includes(req.userId)) - return res.json({errmsg: "Not allowed to delete"}); const nid = req.query.id; - if (!nid.toString().match(/^[0-9]+$/)) - res.json({errmsg: "Bad news ID"}); - NewsModel.remove(nid, err => { - res.json(err || {}); - }); + if ( + params.devs.includes(req.userId) && + nid.toString().match(/^[0-9]+$/) + ) { + NewsModel.remove(nid); + res.json({}); + } }); module.exports = router;