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()
|
||||
|
||||
userService = require("./services/users.service");
|
||||
serverService = require("./services/server.service");
|
||||
|
||||
const User = require('./model/user.model')
|
||||
const Key = require('./model/key.model')
|
||||
|
|
@ -59,8 +60,9 @@ app.get("/", (req, res) => {
|
|||
stats["keys"] = result
|
||||
Member.count({ where: { userId: req.session.user.id } }).then((result) => {
|
||||
stats["groups"] = result
|
||||
|
||||
res.render('index', { user: req.session.user, stats: stats })
|
||||
serverService.getServerListForUserId(req.session.user.id).then((servers) => {
|
||||
res.render('index', { user: req.session.user, stats: stats, servers: servers })
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,17 @@ var router = express.Router();
|
|||
router.use('*', (req, res, next) => {
|
||||
if (req.session.loggedin === true) {
|
||||
User.findOne({ where: { id: req.session.user.id } }).then((result) => {
|
||||
try {
|
||||
if (result.admin === true) {
|
||||
next()
|
||||
} else {
|
||||
res.redirect('/')
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
res.redirect('/')
|
||||
|
||||
}
|
||||
})
|
||||
} else {
|
||||
res.redirect('/')
|
||||
|
|
|
|||
|
|
@ -23,9 +23,13 @@ router.get("/",async (req, res) => {
|
|||
|
||||
router.get("/delete/:userId", (req, res) => {
|
||||
try {
|
||||
if (req.params.userId != req.session.user.id) {
|
||||
userService.delUser(req.params.userId).then((result) => {
|
||||
res.redirect("/admin/users")
|
||||
})
|
||||
} else {
|
||||
res.redirect("/admin/users")
|
||||
}
|
||||
} catch(e) {
|
||||
console.log(e)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,9 +72,28 @@ 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 = {}
|
||||
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 = {
|
||||
addServer,
|
||||
delServer,
|
||||
getServerKeys
|
||||
getServerKeys,
|
||||
getServerListForUserId
|
||||
|
||||
};
|
||||
|
|
@ -34,28 +34,41 @@
|
|||
</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 class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="text-primary fw-bold m-0">Server list</h6>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
<% for (x in servers) { %>
|
||||
<li class="list-group-item">
|
||||
<div class="row align-items-center no-gutters">
|
||||
<div class="col me-2">
|
||||
<h6 class="mb-0"><strong>pve-iut.local</strong></h6><span class="text-xs">Granted 10 september 2023</span>
|
||||
<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>root@172.17.0.1</code></div>
|
||||
</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 class="col-auto"><code><%= servers[x].username %>@<%= servers[x].ip %></code></div>
|
||||
</div>
|
||||
</li>
|
||||
<% } %>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue