mirror of https://github.com/itsmrval/accessGate
dynamic dashboard
parent
7c6c82f47b
commit
c106dd9868
6
index.js
6
index.js
|
|
@ -7,6 +7,7 @@ const databaseService = require('./services/database.service');
|
||||||
require('dotenv').config()
|
require('dotenv').config()
|
||||||
|
|
||||||
userService = require("./services/users.service");
|
userService = require("./services/users.service");
|
||||||
|
serverService = require("./services/server.service");
|
||||||
|
|
||||||
const User = require('./model/user.model')
|
const User = require('./model/user.model')
|
||||||
const Key = require('./model/key.model')
|
const Key = require('./model/key.model')
|
||||||
|
|
@ -59,8 +60,9 @@ app.get("/", (req, res) => {
|
||||||
stats["keys"] = result
|
stats["keys"] = result
|
||||||
Member.count({ where: { userId: req.session.user.id } }).then((result) => {
|
Member.count({ where: { userId: req.session.user.id } }).then((result) => {
|
||||||
stats["groups"] = result
|
stats["groups"] = result
|
||||||
|
serverService.getServerListForUserId(req.session.user.id).then((servers) => {
|
||||||
res.render('index', { user: req.session.user, stats: stats })
|
res.render('index', { user: req.session.user, stats: stats, servers: servers })
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,16 @@ var router = express.Router();
|
||||||
router.use('*', (req, res, next) => {
|
router.use('*', (req, res, next) => {
|
||||||
if (req.session.loggedin === true) {
|
if (req.session.loggedin === true) {
|
||||||
User.findOne({ where: { id: req.session.user.id } }).then((result) => {
|
User.findOne({ where: { id: req.session.user.id } }).then((result) => {
|
||||||
if (result.admin === true) {
|
try {
|
||||||
next()
|
if (result.admin === true) {
|
||||||
} else {
|
next()
|
||||||
|
} else {
|
||||||
|
res.redirect('/')
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
res.redirect('/')
|
res.redirect('/')
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,13 @@ router.get("/",async (req, res) => {
|
||||||
|
|
||||||
router.get("/delete/:userId", (req, res) => {
|
router.get("/delete/:userId", (req, res) => {
|
||||||
try {
|
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")
|
res.redirect("/admin/users")
|
||||||
})
|
}
|
||||||
} catch(e) {
|
} catch(e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,9 +72,28 @@ async function getServerKeys(server) {
|
||||||
return result
|
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 = {
|
module.exports = {
|
||||||
addServer,
|
addServer,
|
||||||
delServer,
|
delServer,
|
||||||
getServerKeys
|
getServerKeys,
|
||||||
|
getServerListForUserId
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -34,28 +34,41 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-6 col-xl-3 mb-4">
|
||||||
|
<div class="card shadow border-start-info py-2">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row align-items-center no-gutters">
|
||||||
|
<div class="col me-2">
|
||||||
|
<div class="text-uppercase text-warning fw-bold text-xs mb-1"><span>my servers</span></div>
|
||||||
|
<div class="row g-0 align-items-center">
|
||||||
|
<div class="col-auto">
|
||||||
|
<div class="text-dark fw-bold h5 mb-0 me-3"><span><%= Object.keys(servers).length %></span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto"><i class="fas fa-hdd fa-2x text-gray-300"></i></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card shadow mb-4">
|
<div class="card shadow mb-4">
|
||||||
<div class="card-header py-3">
|
<div class="card-header py-3">
|
||||||
<h6 class="text-primary fw-bold m-0">Server list</h6>
|
<h6 class="text-primary fw-bold m-0">Server list</h6>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list-group list-group-flush">
|
<ul class="list-group list-group-flush">
|
||||||
<li class="list-group-item">
|
<% for (x in servers) { %>
|
||||||
<div class="row align-items-center no-gutters">
|
<li class="list-group-item">
|
||||||
<div class="col me-2">
|
<div class="row align-items-center no-gutters">
|
||||||
<h6 class="mb-0"><strong>pve-iut.local</strong></h6><span class="text-xs">Granted 10 september 2023</span>
|
<div class="col me-2">
|
||||||
|
<h6 class="mb-0 text-primary"><strong><%= x %></strong></h6><span class="text-xs"><i class="fas fa-clock"> </i> <b>Last pull:</b> <%= servers[x].lastPull %></span>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto"><code><%= servers[x].username %>@<%= servers[x].ip %></code></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto"><code>root@172.17.0.1</code></div>
|
</li>
|
||||||
</div>
|
<% } %>
|
||||||
</li>
|
|
||||||
<li class="list-group-item">
|
|
||||||
<div class="row align-items-center no-gutters">
|
|
||||||
<div class="col me-2">
|
|
||||||
<h6 class="mb-0"><strong>vscode.pve-iut.local</strong></h6><span class="text-xs">Granted 10 september 2023</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-auto"><code>root@172.17.0.2</code></div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue