diff --git a/model/user.model.js b/model/user.model.js index c925538..2b8087d 100644 --- a/model/user.model.js +++ b/model/user.model.js @@ -27,6 +27,10 @@ User.init({ type: DataTypes.STRING, required: true, }, + serverUsername : { + type: DataTypes.STRING, + required: true, + } }, { sequelize, modelName: 'user' diff --git a/routes/admin/servers.route.js b/routes/admin/servers.route.js index dfea27a..67aabb9 100644 --- a/routes/admin/servers.route.js +++ b/routes/admin/servers.route.js @@ -51,7 +51,10 @@ router.get("/", (req, res) => { router.post("/add", (req, res) => { try { - if (req.body.server_hostname && req.body.server_ip && req.body.server_username) { + if (req.body.server_hostname && req.body.server_ip && req.body.server_multi && req.body.server_username) { + if (req.body.server_multi === 'true') { + req.body.server_username = "accessGateMultiuser" + } serverService.addServer(req.body.server_hostname, req.body.server_ip, req.body.server_username).then((secret) => { res.redirect(url.format({ pathname:'/admin/servers', @@ -60,7 +63,6 @@ router.post("/add", (req, res) => { "alert": "secretDisplay" } })); - }) } else { res.redirect(url.format({ diff --git a/routes/admin/users.route.js b/routes/admin/users.route.js index bcc612f..086d210 100644 --- a/routes/admin/users.route.js +++ b/routes/admin/users.route.js @@ -22,6 +22,7 @@ router.get("/",async (req, res) => { }) + router.get("/delete/:userId", (req, res) => { try { if (req.params.userId != req.session.user.id) { diff --git a/routes/auth.route.js b/routes/auth.route.js index f83d673..e7d8e4e 100644 --- a/routes/auth.route.js +++ b/routes/auth.route.js @@ -21,7 +21,7 @@ router.get("/callback", async (req, res) => { req.session.admin = user.admin; res.redirect("/"); } else { - res.send("An error occured"); + res.send("An error occurred"); } } catch (e) { console.log(e) diff --git a/routes/endpoint/update.route.js b/routes/endpoint/update.route.js index a8ab692..cfa1dd1 100644 --- a/routes/endpoint/update.route.js +++ b/routes/endpoint/update.route.js @@ -35,6 +35,25 @@ router.get("/:server", async (req, res) => { } }); +router.get("/update/:server", async (req, res) => { + try { + Server.findOne({ where: { hostname: req.params.server } }).then((server) => { + if (server) { + if (bcrypt.compareSync(req.body.secret, server.secret)) { + res.send(getServerUsers(req.params.server)) + }) + } else { + res.send("invalid request") + } + } else { + res.send("invalid request") + } + }) + } catch (e) { + console.log(e) + } +}); + module.exports = router; diff --git a/services/auth.service.js b/services/auth.service.js index 6ca7644..bf3c4f6 100644 --- a/services/auth.service.js +++ b/services/auth.service.js @@ -32,19 +32,19 @@ async function syncUser(user) { console.log('user ' + user.login + ' updated in database') }); } else { - User.create({ - id: user.id, - login: user.login, - avatar: user.avatar_url, - displayName: user.name - }).then(() => { - User.findAll().then((users) => { - if (users.length === 1) { - userService.makeAdmin(user.login) - } + User.findAll().then((users) => { + User.create({ + id: user.id, + login: user.login, + avatar: user.avatar_url, + displayName: user.name, + admin: (users.length === 1), + serverUsername: false, + + }).then(() => { + console.log('user ' + user.login + ' added to database') }) - console.log('user ' + user.login + ' added to database') - }); + }) } }); } diff --git a/services/server.service.js b/services/server.service.js index a0ab4ce..b1c47d7 100644 --- a/services/server.service.js +++ b/services/server.service.js @@ -84,6 +84,12 @@ async function getServerKeys(server) { return result } +async function getServerUsers(server) { + const dump = await sequelize.query('SELECT DISTINCT serverUsername FROM servers JOIN users on users.id = members.userId JOIN accesses on accesses.serverHostname = servers.hostname JOIN members on members.groupName = accesses.groupName WHERE serverHostname = \'' + server + '\'', {}); + return dump[0] +} + + async function getServerListForUserId(userId) { const dump = await sequelize.query('SELECT hostname, username, ip, lastPull FROM servers JOIN accesses ON servers.hostname = accesses.serverHostname JOIN members ON members.groupName = accesses.groupName WHERE userId = \'' + userId + '\'', {}); result = {} @@ -105,6 +111,7 @@ async function getServerListForUserId(userId) { module.exports = { + getServerUsers, addServer, delServer, getServerKeys, diff --git a/views/admin/server_new.ejs b/views/admin/server_new.ejs index 45c2d6b..9c8158f 100644 --- a/views/admin/server_new.ejs +++ b/views/admin/server_new.ejs @@ -2,7 +2,7 @@
Server editing