From 218ccb3d53f04f8cc5bce9f8ad96f5bdcecd7725 Mon Sep 17 00:00:00 2001 From: Miodec Date: Tue, 8 Jun 2021 16:02:44 +0100 Subject: [PATCH] rewrote config to the new standard --- backend/api/controllers/config.js | 18 +++++++ backend/api/routes/config.js | 10 ++++ backend/dao/configDAO.js | 14 ++++++ backend/handlers/config.js | 82 ------------------------------- 4 files changed, 42 insertions(+), 82 deletions(-) create mode 100644 backend/api/controllers/config.js create mode 100644 backend/api/routes/config.js create mode 100644 backend/dao/configDAO.js delete mode 100644 backend/handlers/config.js diff --git a/backend/api/controllers/config.js b/backend/api/controllers/config.js new file mode 100644 index 000000000..a146ed8bb --- /dev/null +++ b/backend/api/controllers/config.js @@ -0,0 +1,18 @@ +import ConfigDAO from "../../dao/configDAO"; +import { validateConfig } from "../../handlers/validation"; + +class ConfigController { + static async saveConfig(req, res, next) { + try { + const { config } = req.body; + const { uid } = req.decodedToken; + validateConfig(config); + await ConfigDAO.saveConfig(uid, config); + return res.sendStatus(200); + } catch (e) { + return next(e); + } + } +} + +module.exports = ConfigController; diff --git a/backend/api/routes/config.js b/backend/api/routes/config.js new file mode 100644 index 000000000..7c5633c17 --- /dev/null +++ b/backend/api/routes/config.js @@ -0,0 +1,10 @@ +import { authenticateRequest } from "../../middlewares/auth"; + +const { Router } = require("express"); +import ConfigController from "../controllers/auth"; + +const router = Router(); + +router.post("/config/save", authenticateRequest, ConfigController.saveConfig); + +module.exports = router; diff --git a/backend/dao/configDAO.js b/backend/dao/configDAO.js new file mode 100644 index 000000000..70261dc9e --- /dev/null +++ b/backend/dao/configDAO.js @@ -0,0 +1,14 @@ +const MonkeyError = require("../handlers/error"); +const { mongoDB } = require("../init/mongodb"); + +class ConfigDAO { + + static async saveConfig(uid, config) { + return await mongoDB() + .collection("configs") + .updateOne({ uid }, { $set: { config } }, { upsert: true }); + } + +} + +module.exports = ConfigDAO; diff --git a/backend/handlers/config.js b/backend/handlers/config.js deleted file mode 100644 index 88b6258d3..000000000 --- a/backend/handlers/config.js +++ /dev/null @@ -1,82 +0,0 @@ - - -app.post("/saveConfig", authenticateToken, (req, res) => { - try { - if (req.uid === undefined || req.body.obj === undefined) { - console.error(`error saving config for ${req.uid} - missing input`); - res.send({ - resultCode: -1, - message: "Missing input", - }); - } - - let obj = req.body.obj; - let errorMessage = ""; - let err = false; - Object.keys(obj).forEach((key) => { - if (err) return; - if (!isConfigKeyValid(key)) { - err = true; - console.error(`${key} failed regex check`); - errorMessage = `${key} failed regex check`; - } - if (err) return; - if (key === "resultFilters") return; - if (key === "customBackground") return; - let val = obj[key]; - if (Array.isArray(val)) { - val.forEach((valarr) => { - if (!isConfigKeyValid(valarr)) { - err = true; - console.error(`${key}: ${valarr} failed regex check`); - errorMessage = `${key}: ${valarr} failed regex check`; - } - }); - } else { - if (!isConfigKeyValid(val)) { - err = true; - console.error(`${key}: ${val} failed regex check`); - errorMessage = `${key}: ${val} failed regex check`; - } - } - }); - if (err) { - console.error( - `error saving config for ${req.uid} - bad input - ${JSON.stringify( - request.obj - )}` - ); - res.send({ - resultCode: -1, - message: "Bad input. " + errorMessage, - }); - } - - User.findOne({ uid: req.uid }, (err, user) => { - if (err) res.status(500).send({ error: err }); - user.config = obj; - user.save(); - }) - .then(() => { - res.send({ - resultCode: 1, - message: "Saved", - }); - }) - .catch((e) => { - console.error( - `error saving config to DB for ${req.uid} - ${e.message}` - ); - res.send({ - resultCode: -1, - message: e.message, - }); - }); - } catch (e) { - console.error(`error saving config for ${req.uid} - ${e}`); - res.send({ - resultCode: -999, - message: e, - }); - } -});