mirror of https://github.com/itsmrval/accessGate
bug fix group edit + ejs for
parent
8849d0f6e7
commit
4ffc6a41dd
|
|
@ -3,6 +3,7 @@ const express = require('express');
|
||||||
const User = require("../../model/user.model");
|
const User = require("../../model/user.model");
|
||||||
const Group = require("../../model/group.model");
|
const Group = require("../../model/group.model");
|
||||||
const Server = require("../../model/server.model");
|
const Server = require("../../model/server.model");
|
||||||
|
const {groupServerList} = require("../../services/groups.service");
|
||||||
|
|
||||||
groupService = require("../../services/groups.service");
|
groupService = require("../../services/groups.service");
|
||||||
memberService = require("../../services/members.service");
|
memberService = require("../../services/members.service");
|
||||||
|
|
@ -12,8 +13,13 @@ var router = express.Router();
|
||||||
router.get("/", (req, res) => {
|
router.get("/", (req, res) => {
|
||||||
try {
|
try {
|
||||||
groupService.getGroupsWithMembers().then((groups) => {
|
groupService.getGroupsWithMembers().then((groups) => {
|
||||||
|
groupService.getGroupsWithServers().then((groups2) => {
|
||||||
|
for (x in groups) {
|
||||||
|
groups[x]['servers'] = groups2[x].dataValues.accesses
|
||||||
|
}
|
||||||
res.render('admin/groups', { "groups": groups })
|
res.render('admin/groups', { "groups": groups })
|
||||||
})
|
})
|
||||||
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
|
|
@ -51,23 +57,24 @@ router.get("/:name", async (req, res) => {
|
||||||
groupService.groupUserList(req.params.name).then((result) => {
|
groupService.groupUserList(req.params.name).then((result) => {
|
||||||
User.findAll().then((users) => {
|
User.findAll().then((users) => {
|
||||||
for (user in 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]
|
delete users[user]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
groupService.groupServerList(req.params.name).then((result2) => {
|
groupService.groupServerList(req.params.name).then((result2) => {
|
||||||
Server.findAll().then((servers) => {
|
Server.findAll().then((servers) => {
|
||||||
for (server in 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]
|
delete servers[server]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res.render('admin/group_edit', { "group": group, "inGroup": result, "outGroup": users, "inServer": result2, "outServer": servers});
|
res.render('admin/group_edit', { "group": group, "inGroup": result, "outGroup": users, "inServer": result2, "outServer": servers});
|
||||||
});
|
});
|
||||||
})
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
})
|
||||||
|
;
|
||||||
}
|
}
|
||||||
} catch(e){
|
} catch(e){
|
||||||
console.log(e)
|
console.log(e)
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ const Member = require('../model/member.model')
|
||||||
const User = require('../model/user.model')
|
const User = require('../model/user.model')
|
||||||
const Server = require('../model/server.model')
|
const Server = require('../model/server.model')
|
||||||
const Access = require('../model/access.model')
|
const Access = require('../model/access.model')
|
||||||
|
const sequelize = require("./database.service");
|
||||||
|
|
||||||
const regexp_space = /^\S*$/;
|
const regexp_space = /^\S*$/;
|
||||||
|
|
||||||
|
|
@ -62,50 +63,58 @@ async function getGroupsWithMembers() {
|
||||||
return count
|
return count
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getGroupsWithServers() {
|
||||||
|
Group.hasMany(Access);
|
||||||
|
Access.belongsTo(Group);
|
||||||
|
const count = await Group.findAll({ include: Access });
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function groupUserList(groupName) {
|
async function groupUserList(groupName) {
|
||||||
User.hasMany(Member);
|
const dump = await sequelize.query('SELECT * FROM users JOIN members ON users.id = members.userId WHERE groupName = \'' + groupName + '\'', {});
|
||||||
Member.belongsTo(User);
|
result = {}
|
||||||
const users = await User.findAll({ include: Member });
|
for (x in dump[0]) {
|
||||||
var result = []
|
if (dump[0][x].userId) {
|
||||||
for (x in users) {
|
result[(dump[0][x].userId).toString()] = {
|
||||||
try {
|
'id': dump[0][x].userId,
|
||||||
for (y in users[x].dataValues.members) {
|
'login': dump[0][x].login,
|
||||||
if (users[x].dataValues.members[y].dataValues.groupName === groupName) {
|
'avatar': dump[0][x].avatar
|
||||||
result[x] = (users[x].dataValues)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
}}
|
|
||||||
return result
|
return result
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
async function groupServerList(groupName) {
|
async function groupServerList(groupName) {
|
||||||
Server.hasMany(Access);
|
const dump = await sequelize.query('SELECT hostname, ip, username, lastPull FROM servers JOIN accesses ON servers.hostname = accesses.serverHostname WHERE groupName = \'' + groupName + '\'', {});
|
||||||
Access.belongsTo(Server);
|
result = {}
|
||||||
const servers = await Server.findAll({ include: Access });
|
for (x in dump[0]) {
|
||||||
var result = []
|
if (dump[0][x].hostname) {
|
||||||
for (x in servers) {
|
if (!dump[0][x].lastPull) {
|
||||||
try {
|
dump[0][x].lastPull = ' never'
|
||||||
for (y in servers[x].dataValues.accesses) {
|
}
|
||||||
if (servers[x].dataValues.accesses[y].dataValues.groupName === groupName) {
|
result[(dump[0][x].hostname).toString()] = {
|
||||||
result[x] = (servers[x].dataValues)
|
'username': dump[0][x].username,
|
||||||
|
'ip': dump[0][x].ip,
|
||||||
|
'lastPull': dump[0][x].lastPull
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (error) {
|
|
||||||
}}
|
|
||||||
return result
|
return result
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
|
groupServerList('admin')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
addGroup,
|
addGroup,
|
||||||
delGroup,
|
delGroup,
|
||||||
groupUserList,
|
groupUserList,
|
||||||
getGroupsWithMembers,
|
getGroupsWithMembers,
|
||||||
groupServerList
|
groupServerList,
|
||||||
|
getGroupsWithServers
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -16,7 +16,7 @@ async function addServer(hostname, ip, username) {
|
||||||
} else {
|
} else {
|
||||||
if (hostname && ip && username && regexp_space.test(hostname, username) && regexp_ip.test(ip)) {
|
if (hostname && ip && username && regexp_space.test(hostname, username) && regexp_ip.test(ip)) {
|
||||||
var secret_generated= (Math.random() + 1).toString(36).substring(2);
|
var secret_generated= (Math.random() + 1).toString(36).substring(2);
|
||||||
console.log(secret_generated)
|
console.log('secret: TODO' + secret_generated)
|
||||||
Server.create({
|
Server.create({
|
||||||
hostname: hostname.toLowerCase(),
|
hostname: hostname.toLowerCase(),
|
||||||
ip: ip,
|
ip: ip,
|
||||||
|
|
@ -72,6 +72,8 @@ async function getServerKeys(server) {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function getServerListForUserId(userId) {
|
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 + '\'', {});
|
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 = {}
|
result = {}
|
||||||
|
|
|
||||||
|
|
@ -57,14 +57,14 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% inGroup.forEach(function (member) { %>
|
<% for (member in inGroup) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img class="rounded-circle me-2" width="30" height="30" src="<%= member.avatar %>"><%= member.login %></td>
|
<td><img class="rounded-circle me-2" width="30" height="30" src="<%= inGroup[member].avatar %>"><%= inGroup[member].login %></td>
|
||||||
<td><%= member.id %></td>
|
<td><%= inGroup[member].id %></td>
|
||||||
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/members/<%= group.name %>/delete/<%= member.id %>"><i class="far fa-trash-alt"></i></a></td>
|
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/members/<%= group.name %>/delete/<%= inGroup[member].id %>"><i class="far fa-trash-alt"></i></a></td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% } %>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr></tr>
|
<tr></tr>
|
||||||
|
|
@ -133,15 +133,15 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% inServer.forEach(function (access) { %>
|
<% for (access in inServer ) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= access.hostname %></td>
|
<td><%= access %></td>
|
||||||
<td><%= access.ip %></td>
|
<td><%= inServer[access].ip %></td>
|
||||||
<td><%= access.user %></td>
|
<td><%= inServer[access].username %></td>
|
||||||
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/accesses/<%= group.name %>/delete/<%= access.hostname %>"><i class="far fa-trash-alt"></i></a></td>
|
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/accesses/<%= group.name %>/delete/<%= access %>"><i class="far fa-trash-alt"></i></a></td>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% } %>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr></tr>
|
<tr></tr>
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><a style="text-decoration: none" href="/admin/groups/<%= group.name %>"><%= group.name %></a></td>
|
<td><a style="text-decoration: none" href="/admin/groups/<%= group.name %>"><%= group.name %></a></td>
|
||||||
<td><%= group.members.length %></td>
|
<td><%= group.members.length %></td>
|
||||||
<td>undefined</td>
|
<td><%= group.servers.length %></td>
|
||||||
<td style="text-align: right;"><a class="btn btn-sm btn-primary" href="/admin/groups/<%= group.name %>"><i class="far fa-edit"></i></a> <a class="btn btn-sm btn-danger" href="/admin/groups/delete/<%= group.name %>"><i class="far fa-trash-alt"></i></a></td>
|
<td style="text-align: right;"><a class="btn btn-sm btn-primary" href="/admin/groups/<%= group.name %>"><i class="far fa-edit"></i></a> <a class="btn btn-sm btn-danger" href="/admin/groups/delete/<%= group.name %>"><i class="far fa-trash-alt"></i></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% }) %>
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,8 @@
|
||||||
<td><%= server.hostname %></td>
|
<td><%= server.hostname %></td>
|
||||||
<td><%= server.ip %></td>
|
<td><%= server.ip %></td>
|
||||||
<td><%= server.username %></td>
|
<td><%= server.username %></td>
|
||||||
<td><%= server.lastPull %></td>
|
|
||||||
|
<td><%= server.lastPull %> <% if (!server.lastPull) { %>never<% } %></td>
|
||||||
<td style="text-align: right;"> <a class="btn btn-sm btn-danger" href="/admin/servers/delete/<%= server.hostname %>"><i class="far fa-trash-alt"></i></a></td>
|
<td style="text-align: right;"> <a class="btn btn-sm btn-danger" href="/admin/servers/delete/<%= server.hostname %>"><i class="far fa-trash-alt"></i></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% }) %>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue