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 @@

Servers / new

-
+

Server editing

@@ -15,12 +15,32 @@
-
+
+ +
+ + +
+
+ + +
+ +
+ + + <%- include('../footer'); %> \ No newline at end of file diff --git a/views/admin/users.ejs b/views/admin/users.ejs index d5da32d..616c55a 100644 --- a/views/admin/users.ejs +++ b/views/admin/users.ejs @@ -30,6 +30,7 @@ username id admin + server user updated @@ -40,7 +41,8 @@ <%= user.login %> <%= user.id %> <%= user.admin %> - <%= user.updatedAt %> + <%= user.serverUsername %> + <%= new Date(user.updatedAt).toLocaleString() %> diff --git a/views/footer.ejs b/views/footer.ejs index 0654557..5cecce6 100644 --- a/views/footer.ejs +++ b/views/footer.ejs @@ -29,19 +29,16 @@ } - function resizeTextArea(textarea) { - const { style, value } = textarea; - style.height = style.minHeight = 'auto'; - style.minHeight = `${ Math.min(textarea.scrollHeight + 4, parseInt(textarea.style.maxHeight)) }px`; - style.height = `${ textarea.scrollHeight + 4 }px`; + $( "#server_user_false" ).on( "click", function() { + document.getElementById("inputOther").style.display = "none"; + } ); + $( "#server_user_true" ).on( "click", function() { + document.getElementById("inputOther").style.display = ""; + } ); + function fieldShow(value) { + console.log(value) } - const textarea = document.getElementById('textarea'); - - textarea.addEventListener('input', () => { - resizeTextArea(textarea); - }); - \ No newline at end of file