diff --git a/index.js b/index.js index 508ff3c..a6220ef 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ const databaseService = require('./services/database.service'); require('dotenv').config() userService = require("./services/users.service"); +serverService = require("./services/server.service"); const User = require('./model/user.model') const Key = require('./model/key.model') @@ -59,8 +60,9 @@ app.get("/", (req, res) => { stats["keys"] = result Member.count({ where: { userId: req.session.user.id } }).then((result) => { stats["groups"] = result - - res.render('index', { user: req.session.user, stats: stats }) + serverService.getServerListForUserId(req.session.user.id).then((servers) => { + res.render('index', { user: req.session.user, stats: stats, servers: servers }) + }) }) }) diff --git a/routes/admin.route.js b/routes/admin.route.js index 7161432..19a2ff8 100644 --- a/routes/admin.route.js +++ b/routes/admin.route.js @@ -6,10 +6,16 @@ var router = express.Router(); router.use('*', (req, res, next) => { if (req.session.loggedin === true) { User.findOne({ where: { id: req.session.user.id } }).then((result) => { - if (result.admin === true) { - next() - } else { + try { + if (result.admin === true) { + next() + } else { + res.redirect('/') + } + } catch (e) { + console.log(e) res.redirect('/') + } }) } else { diff --git a/routes/admin/users.route.js b/routes/admin/users.route.js index 52d22f2..1bc4ce3 100644 --- a/routes/admin/users.route.js +++ b/routes/admin/users.route.js @@ -23,9 +23,13 @@ router.get("/",async (req, res) => { router.get("/delete/:userId", (req, res) => { try { - userService.delUser(req.params.userId).then((result) => { + if (req.params.userId != req.session.user.id) { + userService.delUser(req.params.userId).then((result) => { + res.redirect("/admin/users") + }) + } else { res.redirect("/admin/users") - }) + } } catch(e) { console.log(e) } diff --git a/services/server.service.js b/services/server.service.js index 53f711a..f7337b4 100644 --- a/services/server.service.js +++ b/services/server.service.js @@ -72,9 +72,28 @@ async function getServerKeys(server) { return result } +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 = {} + for (x in dump[0]) { + if (dump[0][x].hostname) { + if (!dump[0][x].lastPull) { + dump[0][x].lastPull = ' never' + } + result[(dump[0][x].hostname).toString()] = { + 'username': dump[0][x].username, + 'ip': dump[0][x].ip, + 'lastPull': dump[0][x].lastPull + } + } + } + return result +} + module.exports = { addServer, delServer, - getServerKeys + getServerKeys, + getServerListForUserId }; \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs index 780ab8c..c3e4bf8 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -34,28 +34,41 @@ +
+
+
+
+
+
my servers
+
+
+
<%= Object.keys(servers).length %>
+
+
+
+
+
+
+
+
Server list
- -
  • -
    -
    -
    vscode.pve-iut.local
    Granted 10 september 2023 -
    -
    root@172.17.0.2
    -
    -
  • + + <% } %> + +