From 4ffc6a41ddf531e9b226a728b0dce9b7f2c473e6 Mon Sep 17 00:00:00 2001 From: Valentin Date: Mon, 11 Sep 2023 23:58:01 +0200 Subject: [PATCH] bug fix group edit + ejs for --- routes/admin/groups.route.js | 21 +++++++---- services/groups.service.js | 69 ++++++++++++++++++++---------------- services/server.service.js | 4 ++- views/admin/group_edit.ejs | 22 ++++++------ views/admin/groups.ejs | 2 +- views/admin/servers.ejs | 3 +- 6 files changed, 70 insertions(+), 51 deletions(-) diff --git a/routes/admin/groups.route.js b/routes/admin/groups.route.js index 2d3cd5b..793bbfc 100644 --- a/routes/admin/groups.route.js +++ b/routes/admin/groups.route.js @@ -3,6 +3,7 @@ const express = require('express'); const User = require("../../model/user.model"); const Group = require("../../model/group.model"); const Server = require("../../model/server.model"); +const {groupServerList} = require("../../services/groups.service"); groupService = require("../../services/groups.service"); memberService = require("../../services/members.service"); @@ -12,7 +13,12 @@ var router = express.Router(); router.get("/", (req, res) => { try { groupService.getGroupsWithMembers().then((groups) => { - res.render('admin/groups', { "groups": groups }) + groupService.getGroupsWithServers().then((groups2) => { + for (x in groups) { + groups[x]['servers'] = groups2[x].dataValues.accesses + } + res.render('admin/groups', { "groups": groups }) + }) }) } catch (e) { console.log(e) @@ -51,23 +57,24 @@ router.get("/:name", async (req, res) => { groupService.groupUserList(req.params.name).then((result) => { User.findAll().then((users) => { for (user in users) { - if (JSON.stringify(result).includes(users[user].dataValues.id)) { + if (Object.keys(result).includes(users[user].dataValues.id.toString())) { delete users[user] } } groupService.groupServerList(req.params.name).then((result2) => { Server.findAll().then((servers) => { for (server in servers) { - if (JSON.stringify(result2).includes(servers[server].dataValues.hostname)) { + if (Object.keys(result2).includes(servers[server].dataValues.hostname)) { delete servers[server] } } res.render('admin/group_edit', { "group": group, "inGroup": result, "outGroup": users, "inServer": result2, "outServer": servers}); }); - }) - }); - }) - }); + }); + }) + }); + }) + ; } } catch(e){ console.log(e) diff --git a/services/groups.service.js b/services/groups.service.js index 59cecc4..0a5ba88 100644 --- a/services/groups.service.js +++ b/services/groups.service.js @@ -3,6 +3,7 @@ const Member = require('../model/member.model') const User = require('../model/user.model') const Server = require('../model/server.model') const Access = require('../model/access.model') +const sequelize = require("./database.service"); const regexp_space = /^\S*$/; @@ -62,50 +63,58 @@ async function getGroupsWithMembers() { return count } +async function getGroupsWithServers() { + Group.hasMany(Access); + Access.belongsTo(Group); + const count = await Group.findAll({ include: Access }); + return count +} + + async function groupUserList(groupName) { - User.hasMany(Member); - Member.belongsTo(User); - const users = await User.findAll({ include: Member }); - var result = [] - for (x in users) { - try { - for (y in users[x].dataValues.members) { - if (users[x].dataValues.members[y].dataValues.groupName === groupName) { - result[x] = (users[x].dataValues) - } + const dump = await sequelize.query('SELECT * FROM users JOIN members ON users.id = members.userId WHERE groupName = \'' + groupName + '\'', {}); + result = {} + for (x in dump[0]) { + if (dump[0][x].userId) { + result[(dump[0][x].userId).toString()] = { + 'id': dump[0][x].userId, + 'login': dump[0][x].login, + 'avatar': dump[0][x].avatar } - - } catch (error) { - }} + } + } return result -}; - +} async function groupServerList(groupName) { - Server.hasMany(Access); - Access.belongsTo(Server); - const servers = await Server.findAll({ include: Access }); - var result = [] - for (x in servers) { - try { - for (y in servers[x].dataValues.accesses) { - if (servers[x].dataValues.accesses[y].dataValues.groupName === groupName) { - result[x] = (servers[x].dataValues) - } + const dump = await sequelize.query('SELECT hostname, ip, username, lastPull FROM servers JOIN accesses ON servers.hostname = accesses.serverHostname WHERE groupName = \'' + groupName + '\'', {}); + result = {} + for (x in dump[0]) { + if (dump[0][x].hostname) { + if (!dump[0][x].lastPull) { + dump[0][x].lastPull = ' never' } - - } catch (error) { - }} + result[(dump[0][x].hostname).toString()] = { + 'username': dump[0][x].username, + 'ip': dump[0][x].ip, + 'lastPull': dump[0][x].lastPull + } + } + } return result -}; +} + + +groupServerList('admin') module.exports = { addGroup, delGroup, groupUserList, getGroupsWithMembers, - groupServerList + groupServerList, + getGroupsWithServers }; \ No newline at end of file diff --git a/services/server.service.js b/services/server.service.js index f7337b4..b341c97 100644 --- a/services/server.service.js +++ b/services/server.service.js @@ -16,7 +16,7 @@ async function addServer(hostname, ip, username) { } else { if (hostname && ip && username && regexp_space.test(hostname, username) && regexp_ip.test(ip)) { var secret_generated= (Math.random() + 1).toString(36).substring(2); - console.log(secret_generated) + console.log('secret: TODO' + secret_generated) Server.create({ hostname: hostname.toLowerCase(), ip: ip, @@ -72,6 +72,8 @@ 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 = {} diff --git a/views/admin/group_edit.ejs b/views/admin/group_edit.ejs index 672b354..79ecae8 100644 --- a/views/admin/group_edit.ejs +++ b/views/admin/group_edit.ejs @@ -57,14 +57,14 @@ - <% inGroup.forEach(function (member) { %> + <% for (member in inGroup) { %> - <%= member.login %> - <%= member.id %> - + <%= inGroup[member].login %> + <%= inGroup[member].id %> + - <% }) %> + <% } %> @@ -133,15 +133,15 @@ - <% inServer.forEach(function (access) { %> + <% for (access in inServer ) { %> - <%= access.hostname %> - <%= access.ip %> - <%= access.user %> - + <%= access %> + <%= inServer[access].ip %> + <%= inServer[access].username %> + - <% }) %> + <% } %> diff --git a/views/admin/groups.ejs b/views/admin/groups.ejs index 46fda38..be6144e 100644 --- a/views/admin/groups.ejs +++ b/views/admin/groups.ejs @@ -30,7 +30,7 @@ <%= group.name %> <%= group.members.length %> - undefined + <%= group.servers.length %> <% }) %> diff --git a/views/admin/servers.ejs b/views/admin/servers.ejs index 04449a9..fa0491b 100644 --- a/views/admin/servers.ejs +++ b/views/admin/servers.ejs @@ -38,7 +38,8 @@ <%= server.hostname %> <%= server.ip %> <%= server.username %> - <%= server.lastPull %> + + <%= server.lastPull %> <% if (!server.lastPull) { %>never<% } %> <% }) %>