mirror of https://github.com/itsmrval/accessGate
sync
parent
4d04f849dd
commit
05b4752183
|
|
@ -27,6 +27,10 @@ User.init({
|
|||
type: DataTypes.STRING,
|
||||
required: true,
|
||||
},
|
||||
serverUsername : {
|
||||
type: DataTypes.STRING,
|
||||
required: true,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'user'
|
||||
|
|
|
|||
|
|
@ -51,7 +51,10 @@ router.get("/", (req, res) => {
|
|||
|
||||
router.post("/add", (req, res) => {
|
||||
try {
|
||||
if (req.body.server_hostname && req.body.server_ip && req.body.server_username) {
|
||||
if (req.body.server_hostname && req.body.server_ip && req.body.server_multi && req.body.server_username) {
|
||||
if (req.body.server_multi === 'true') {
|
||||
req.body.server_username = "accessGateMultiuser"
|
||||
}
|
||||
serverService.addServer(req.body.server_hostname, req.body.server_ip, req.body.server_username).then((secret) => {
|
||||
res.redirect(url.format({
|
||||
pathname:'/admin/servers',
|
||||
|
|
@ -60,7 +63,6 @@ router.post("/add", (req, res) => {
|
|||
"alert": "secretDisplay"
|
||||
}
|
||||
}));
|
||||
|
||||
})
|
||||
} else {
|
||||
res.redirect(url.format({
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ router.get("/",async (req, res) => {
|
|||
})
|
||||
|
||||
|
||||
|
||||
router.get("/delete/:userId", (req, res) => {
|
||||
try {
|
||||
if (req.params.userId != req.session.user.id) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ router.get("/callback", async (req, res) => {
|
|||
req.session.admin = user.admin;
|
||||
res.redirect("/");
|
||||
} else {
|
||||
res.send("An error occured");
|
||||
res.send("An error occurred");
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
|
|
|||
|
|
@ -35,6 +35,25 @@ router.get("/:server", async (req, res) => {
|
|||
}
|
||||
});
|
||||
|
||||
router.get("/update/:server", async (req, res) => {
|
||||
try {
|
||||
Server.findOne({ where: { hostname: req.params.server } }).then((server) => {
|
||||
if (server) {
|
||||
if (bcrypt.compareSync(req.body.secret, server.secret)) {
|
||||
res.send(getServerUsers(req.params.server))
|
||||
})
|
||||
} else {
|
||||
res.send("invalid request")
|
||||
}
|
||||
} else {
|
||||
res.send("invalid request")
|
||||
}
|
||||
})
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
module.exports = router;
|
||||
|
||||
|
|
|
|||
|
|
@ -32,19 +32,19 @@ async function syncUser(user) {
|
|||
console.log('user ' + user.login + ' updated in database')
|
||||
});
|
||||
} else {
|
||||
User.create({
|
||||
id: user.id,
|
||||
login: user.login,
|
||||
avatar: user.avatar_url,
|
||||
displayName: user.name
|
||||
}).then(() => {
|
||||
User.findAll().then((users) => {
|
||||
if (users.length === 1) {
|
||||
userService.makeAdmin(user.login)
|
||||
}
|
||||
User.findAll().then((users) => {
|
||||
User.create({
|
||||
id: user.id,
|
||||
login: user.login,
|
||||
avatar: user.avatar_url,
|
||||
displayName: user.name,
|
||||
admin: (users.length === 1),
|
||||
serverUsername: false,
|
||||
|
||||
}).then(() => {
|
||||
console.log('user ' + user.login + ' added to database')
|
||||
})
|
||||
console.log('user ' + user.login + ' added to database')
|
||||
});
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,6 +84,12 @@ async function getServerKeys(server) {
|
|||
return result
|
||||
}
|
||||
|
||||
async function getServerUsers(server) {
|
||||
const dump = await sequelize.query('SELECT DISTINCT serverUsername FROM servers JOIN users on users.id = members.userId JOIN accesses on accesses.serverHostname = servers.hostname JOIN members on members.groupName = accesses.groupName WHERE serverHostname = \'' + server + '\'', {});
|
||||
return dump[0]
|
||||
}
|
||||
|
||||
|
||||
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 = {}
|
||||
|
|
@ -105,6 +111,7 @@ async function getServerListForUserId(userId) {
|
|||
|
||||
|
||||
module.exports = {
|
||||
getServerUsers,
|
||||
addServer,
|
||||
delServer,
|
||||
getServerKeys,
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div class="container-fluid">
|
||||
<h3 class="text-dark mb-4"><a style="text-decoration: none" href="/admin/groups">Servers</a> / new </h3>
|
||||
<div class="card shadow mb-5">
|
||||
<div class="card shadow">
|
||||
<div class="card-header py-3">
|
||||
<p class="text-primary m-0 fw-bold">Server editing</p>
|
||||
</div>
|
||||
|
|
@ -15,12 +15,32 @@
|
|||
<div class="mb-3"><button class="btn btn-primary btn-sm" type="submit">Create server</button></div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3"><label class="form-label"><strong>User</strong></label><input class="form-control" placeholder="root" type="text" name="server_username"></div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label"><strong>User configuration</strong></label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" value="true" name="server_multi" id="server_user_false" checked>
|
||||
<label class="form-check-label" for="server_user_false">
|
||||
Per user key
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" value="false" name="server_multi" id="server_user_true">
|
||||
<label class="form-check-label" for="server_user_true">
|
||||
Only one user key
|
||||
</label>
|
||||
</div>
|
||||
<div id="inputOther" style="display: none">
|
||||
<div class="mb-3"><label class="form-label"><strong>User</strong></label><input class="form-control" value="root" type="text" name="server_username"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<%- include('../footer'); %>
|
||||
|
|
@ -30,6 +30,7 @@
|
|||
<th>username</th>
|
||||
<th>id</th>
|
||||
<th>admin</th>
|
||||
<th>server user</th>
|
||||
<th>updated</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
|
@ -40,7 +41,8 @@
|
|||
<td><img class="rounded-circle me-2" width="30" height="30" src="<%= user.avatar %>"><%= user.login %></td>
|
||||
<td><%= user.id %></td>
|
||||
<td><%= user.admin %></td>
|
||||
<td><%= user.updatedAt %></td>
|
||||
<td><%= user.serverUsername %></td>
|
||||
<td><%= new Date(user.updatedAt).toLocaleString() %></td>
|
||||
<td style="text-align: right;"><a class="btn btn-sm btn-primary" href="/admin/users/<%= user.id %>"><i class="fas fa-key"></i></a> <a class="btn btn-sm btn-danger" href="/admin/users/delete/<%= user.id %>"><i class="far fa-trash-alt"></i></a></td>
|
||||
|
||||
</tr>
|
||||
|
|
|
|||
|
|
@ -29,19 +29,16 @@
|
|||
}
|
||||
|
||||
|
||||
function resizeTextArea(textarea) {
|
||||
const { style, value } = textarea;
|
||||
style.height = style.minHeight = 'auto';
|
||||
style.minHeight = `${ Math.min(textarea.scrollHeight + 4, parseInt(textarea.style.maxHeight)) }px`;
|
||||
style.height = `${ textarea.scrollHeight + 4 }px`;
|
||||
$( "#server_user_false" ).on( "click", function() {
|
||||
document.getElementById("inputOther").style.display = "none";
|
||||
} );
|
||||
$( "#server_user_true" ).on( "click", function() {
|
||||
document.getElementById("inputOther").style.display = "";
|
||||
} );
|
||||
function fieldShow(value) {
|
||||
console.log(value)
|
||||
}
|
||||
|
||||
const textarea = document.getElementById('textarea');
|
||||
|
||||
textarea.addEventListener('input', () => {
|
||||
resizeTextArea(textarea);
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue