diff --git a/routes/admin/accesses.route.js b/routes/admin/accesses.route.js index b453588..25f172f 100644 --- a/routes/admin/accesses.route.js +++ b/routes/admin/accesses.route.js @@ -5,6 +5,7 @@ accessesService = require("../../services/accesses.service"); var router = express.Router(); + router.get('/:name/add/:server', (req, res) => { try { accessesService.addAccess(req.params.server, req.params.name).then((result) => { diff --git a/routes/admin/servers.route.js b/routes/admin/servers.route.js index 67aabb9..8007ec6 100644 --- a/routes/admin/servers.route.js +++ b/routes/admin/servers.route.js @@ -9,6 +9,8 @@ memberService = require("../../services/members.service"); serverService = require("../../services/server.service"); var router = express.Router(); +const regexp_ip = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/ +const regex_space = /^\S*$/; router.get("/", (req, res) => { try { @@ -51,7 +53,7 @@ router.get("/", (req, res) => { router.post("/add", (req, res) => { try { - if (req.body.server_hostname && req.body.server_ip && req.body.server_multi && req.body.server_username) { + if (req.body.server_hostname && req.body.server_ip && req.body.server_multi && req.body.server_username && regexp_ip.test(req.body.server_ip) && regexp_space.test(req.body.server_hostname, req.body.server_username)) { if (req.body.server_multi === 'true') { req.body.server_username = "accessGateMultiuser" } diff --git a/routes/admin/users.route.js b/routes/admin/users.route.js index 086d210..cb1c560 100644 --- a/routes/admin/users.route.js +++ b/routes/admin/users.route.js @@ -10,6 +10,8 @@ userService = require("../../services/users.service"); var router = express.Router(); +const regexp_space = /^\S*$/; + router.get("/",async (req, res) => { try { @@ -138,4 +140,47 @@ router.post("/:id/addKey", (req, res) => { }) + +router.post("/:id/update", (req, res) => { + try { + if (req.body.user_serveruser && regexp_space.test(req.body.user_serveruser)) { + User.findOne({ where: { id: req.params.id } }).then((user) => { + if (req.body.user_admin) { + user.admin = true + } else { + user.admin = false + } + user.serverUsername = req.body.user_serveruser + user.save() + res.redirect(url.format({ + pathname:"/admin/users/"+req.params.id, + query: { + "alert": "✅ User " + user.login + " updated.", + "type": "success" + } + })); + + }) + } else { + res.redirect(url.format({ + pathname:"/admin/users/"+req.params.id, + query: { + "alert": "⚠️ Missing or invalid arguments.", + "type": "warning" + } + })); + } + } catch(e) { + console.log(e) + res.redirect(url.format({ + pathname:'/admin/users', + query: { + "alert": "⚠️ An error occured, ask your admin to check logs.", + "type": "danger" + } + })); + } + +}) + module.exports = router; \ No newline at end of file diff --git a/routes/keys.route.js b/routes/keys.route.js index b87e181..a3cb3e2 100644 --- a/routes/keys.route.js +++ b/routes/keys.route.js @@ -1,11 +1,15 @@ const express = require('express'); const keyService = require("../services/keys.service"); +const userService = require("../services/users.service"); const Key = require("../model/key.model"); const url = require("url"); var router = express.Router(); +const regexp_space = /^\S*$/; + + router.get('*', (req, res, next) => { if (req.session.loggedin === true) { next() @@ -16,7 +20,7 @@ router.get('*', (req, res, next) => { router.post("/add", (req, res) => { try { - if (req.body.key_content && req.body.key_name) { + if (req.body.key_content && req.body.key_name && regexp_space.test(req.body.key_content, req.body.key_name)) { keyService.addKey(req.body.key_content, req.body.key_name, req.session.user.id).then((result) => { res.redirect(url.format({ pathname:'/keys', @@ -40,7 +44,7 @@ router.post("/add", (req, res) => { res.redirect(url.format({ pathname:'/keys', query: { - "alert": "⚠️ An error occured, ask your admin to check logs.", + "alert": "⚠️ An error occurred, ask your admin to check logs.", "type": "danger" } })); @@ -48,23 +52,58 @@ router.post("/add", (req, res) => { }) -router.get("/delete/:key", (req, res) => { +router.post("/username", (req, res) => { try { - keyService.delKey(req.params.key, req.session.user.id).then((result) => { + if (req.body.key_username && regexp_space.test(req.body.key_username)) { + userService.updateServerUser(req.session.user.login, req.query.key_username).then((result) => { + res.redirect(url.format({ + pathname:'/keys', + query: { + "alert": "✅ Username updated.", + "type": "success" + } + })); + }) + } else { res.redirect(url.format({ pathname:'/keys', query: { - "alert": "🗑️ Key " + req.params.key + " deleted.", - "type": "success" + "alert": "⚠️ Missing or invalid arguments.", + "type": "warning" } })); - }) + } } catch(e) { console.log(e) res.redirect(url.format({ pathname:'/keys', query: { - "alert": "⚠️ An error occured, ask your admin to check logs.", + "alert": "⚠️ An error occurred, ask your admin to check logs.", + "type": "danger" + } + })); + } +}) + +router.get("/delete/:key", (req, res) => { + try { + if (req.params.key && regexp_space.test(req.params.key)) { + keyService.delKey(req.params.key, req.session.user.id).then((result) => { + res.redirect(url.format({ + pathname:'/keys', + query: { + "alert": "🗑️ Key " + req.params.key + " deleted.", + "type": "success" + } + })); + }) + } + } catch(e) { + console.log(e) + res.redirect(url.format({ + pathname:'/keys', + query: { + "alert": "⚠️ An error occurred, ask your admin to check logs.", "type": "danger" } })); diff --git a/services/users.service.js b/services/users.service.js index 42a2c59..a3755a1 100644 --- a/services/users.service.js +++ b/services/users.service.js @@ -14,6 +14,17 @@ function makeAdmin(login) { }); } +async function updateServerUser(login, serverUsername) { + User.findOne({ where: { login: login } }).then((result) => { + if (result) { + result.serverUsername = serverUsername; + result.save().then(() => { + console.log('user ' + result.login + ' updated') + }); + } + }) +} + async function delUser(id) { User.findOne({where: { id: id}}).then((result) => { @@ -31,6 +42,7 @@ async function delUser(id) { module.exports = { makeAdmin, + updateServerUser, delUser, }; \ No newline at end of file diff --git a/views/admin/user_edit.ejs b/views/admin/user_edit.ejs index 937f60c..29cb8e2 100644 --- a/views/admin/user_edit.ejs +++ b/views/admin/user_edit.ejs @@ -26,7 +26,7 @@ <% keys.forEach(function (key) { %>
Other
Other
+