1
0
mirror of synced 2025-10-28 18:19:17 +00:00

admin dashboard, database updated (members, groups), group setup and permissions

This commit is contained in:
Valentin PUCCETTI
2023-09-10 20:52:09 +02:00
parent 14dad1f5f1
commit a3b8a865fd
21 changed files with 723 additions and 34 deletions

124
routes/admin.route.js Normal file
View File

@@ -0,0 +1,124 @@
const express = require('express');
const User = require("../model/user.model");
const Group = require("../model/group.model");
const keyService = require("../services/keys.service");
groupService = require("../services/group.service");
const Member = require("../model/member.model");
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 {
res.redirect('/')
}
})
} else {
res.redirect('/')
}
});
router.get("/users", (req, res) => {
User.findAll().then((users) => {
res.render('admin/users', { "users": users })
})
})
router.get("/groups", (req, res) => {
Group.findAll().then((groups) => {
res.render('admin/groups', { "groups": groups })
})
})
router.post("/groups/add", (req, res) => {
if (req.body.group_name) {
groupService.addGroup(req.body.group_name).then((result) => {
res.redirect("/admin/groups")
})
} else {
res.redirect("/admin/groups")
}
})
router.get("/groups/delete/:group", (req, res) => {
groupService.delGroup(req.params.group).then((result) => {
res.redirect("/admin/groups")
})
});
router.get("/groups/:name", async (req, res) => {
if (req.params.name === "new") {
res.render('admin/group_new')
} else {
Group.findOne({ where: { name: req.params.name } }).then((group) => {
groupService.groupUserList(req.params.name).then((result) => {
User.findAll().then((users) => {
for (user in users) {
if (JSON.stringify(result).includes(users[user].dataValues.id)) {
delete users[user]
}
}
res.render('admin/group_edit', { "group": group, "inGroup": result, "outGroup": users })
});
})
});
}
})
router.get('/members/:name/add/:user', (req, res) => {
Group.findOne({ where: { name: req.params.name } }).then((result) => {
if (result) {
User.findOne({ where: { id: req.params.user } }).then((user) => {
if (user) {
Member.findOne({ where: { groupname: result.name, userId: user.id } }).then((member) => {
if (!member) {
Member.create({
userId: user.id,
groupName: result.name
}).then((member) => {
console.log('member added to database' + '(' + member.userId + ',' + member.groupName + ')')
res.redirect('/admin/groups/' + result.name)
});
}
})
}
})
}
})
})
router.get('/members/:name/delete/:user', (req, res) => {
Group.findOne({ where: { name: req.params.name } }).then((result) => {
if (result) {
User.findOne({ where: { id: req.params.user } }).then((user) => {
if (user) {
Member.findOne({ where: { groupname: result.name, userId: user.id } }).then((member) => {
if (member) {
Member.destroy({ where: { groupname: result.name, userId: user.id }}).then((member) => {
console.log('member deleted from database' + '(' + member.userId + ',' + member.groupName + ')')
res.redirect('/admin/groups/' + result.name)
});
}
})
}
})
}
})
})
module.exports = router;

View File

@@ -1,5 +1,4 @@
const express = require('express');
const {default: axios} = require("axios");
const authService = require("../services/auth.service");
var router = express.Router();
@@ -18,6 +17,7 @@ router.get("/callback", async (req, res) => {
req.session.access_token = access_token;
req.session.user = user;
req.session.loggedin = true;
req.session.admin = user.admin;
res.redirect("/");
} else {
res.send("An error occured");

40
routes/keys.route.js Normal file
View File

@@ -0,0 +1,40 @@
const express = require('express');
const keyService = require("../services/keys.service");
const Key = require("../model/key.model");
var router = express.Router();
router.get('*', (req, res, next) => {
if (req.session.loggedin === true) {
next()
} else {
res.redirect('/')
}
});
router.post("/add", (req, res) => {
if (req.body.key_content && req.body.key_name) {
keyService.addKey(req.body.key_content, req.body.key_name, req.session.user.id).then((result) => {
res.redirect("/keys")
})
} else {
res.redirect("/keys")
}
})
router.get("/delete/:key", (req, res) => {
keyService.delKey(req.params.key, req.session.user.id).then((result) => {
res.redirect("/keys")
})
});
router.get("/", (req, res) => {
Key.findAll({where: {idOwner: req.session.user.id}}).then((keys) => {
res.render('keys', { "keys": keys })
})
});
module.exports = router;