mirror of https://github.com/itsmrval/accessGate
130 lines
4.3 KiB
JavaScript
130 lines
4.3 KiB
JavaScript
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");
|
|
const url = require("url");
|
|
|
|
groupService = require("../../services/groups.service");
|
|
memberService = require("../../services/members.service");
|
|
|
|
var router = express.Router();
|
|
|
|
router.get("/", (req, res) => {
|
|
try {
|
|
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, locals: {alert: req.query.alert, alert_type: req.query.type} })
|
|
})
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
}
|
|
})
|
|
|
|
|
|
router.post("/add", (req, res) => {
|
|
if (req.body.group_name) {
|
|
groupService.addGroup(req.body.group_name).then((result) => {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "✅ Group " + req.body.group_name + " added.",
|
|
"type": "success"
|
|
}
|
|
}));
|
|
})
|
|
} else {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "⚠️ Missing or invalid arguments.",
|
|
"type": "warning"
|
|
}
|
|
}));
|
|
}
|
|
})
|
|
|
|
router.get("/delete/:group", (req, res) => {
|
|
try {
|
|
groupService.delGroup(req.params.group).then((result) => {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "🗑️ Group " + req.params.group + " deleted.",
|
|
"type": "success"
|
|
}
|
|
}));
|
|
})
|
|
} catch (e) {
|
|
console.log(e)
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "⚠️ An error occured, ask your admin to check logs.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
|
|
});
|
|
|
|
|
|
router.get("/:name", async (req, res) => {
|
|
try {
|
|
if (req.params.name === "new") {
|
|
res.render('admin/group_new')
|
|
} else {
|
|
Group.findOne({ where: { name: req.params.name } }).then((group) => {
|
|
if (group) {
|
|
groupService.groupUserList(req.params.name).then((result) => {
|
|
User.findAll().then((users) => {
|
|
for (user in users) {
|
|
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 (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});
|
|
});
|
|
});
|
|
})
|
|
});
|
|
} else {
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "⚠️ Missing or invalid group.",
|
|
"type": "warning"
|
|
}
|
|
}));
|
|
}
|
|
})
|
|
;
|
|
}
|
|
} catch(e){
|
|
console.log(e)
|
|
res.redirect(url.format({
|
|
pathname:'/admin/groups',
|
|
query: {
|
|
"alert": "⚠️ An error occured, ask your admin to check logs.",
|
|
"type": "danger"
|
|
}
|
|
}));
|
|
}
|
|
})
|
|
|
|
|
|
|
|
|
|
module.exports = router; |