multi user features

pull/1/head
Valentin 2023-09-14 19:34:16 +02:00
parent 05b4752183
commit 89951b45fe
7 changed files with 47 additions and 41 deletions

16
package-lock.json generated
View File

@ -267,11 +267,6 @@
"node": ">= 10.0.0" "node": ">= 10.0.0"
} }
}, },
"node_modules/bcrypt/node_modules/node-addon-api": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
},
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.20.2", "version": "1.20.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
@ -1393,9 +1388,9 @@
} }
}, },
"node_modules/node-addon-api": { "node_modules/node-addon-api": {
"version": "4.3.0", "version": "5.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
}, },
"node_modules/node-fetch": { "node_modules/node-fetch": {
"version": "2.7.0", "version": "2.7.0",
@ -2063,6 +2058,11 @@
} }
} }
}, },
"node_modules/sqlite3/node_modules/node-addon-api": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
"integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ=="
},
"node_modules/ssri": { "node_modules/ssri": {
"version": "8.0.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",

View File

@ -1 +1,4 @@
.bs-icon{--bs-icon-size:.75rem;display:flex;flex-shrink:0;justify-content:center;align-items:center;font-size:var(--bs-icon-size);width:calc(var(--bs-icon-size) * 2);height:calc(var(--bs-icon-size) * 2);color:var(--bs-primary)}.bs-icon-xs{--bs-icon-size:1rem;width:calc(var(--bs-icon-size) * 1.5);height:calc(var(--bs-icon-size) * 1.5)}.bs-icon-sm{--bs-icon-size:1rem}.bs-icon-md{--bs-icon-size:1.5rem}.bs-icon-lg{--bs-icon-size:2rem}.bs-icon-xl{--bs-icon-size:2.5rem}.bs-icon.bs-icon-primary{color:var(--bs-white);background:var(--bs-primary)}.bs-icon.bs-icon-primary-light{color:var(--bs-primary);background:rgba(var(--bs-primary-rgb),.2)}.bs-icon.bs-icon-semi-white{color:var(--bs-primary);background:rgba(255,255,255,.5)}.bs-icon.bs-icon-rounded{border-radius:.5rem}.bs-icon.bs-icon-circle{border-radius:50%}.icon-separator{font-size:0%;margin-bottom:50px}.icon-separator div{border:none;border-top:.25rem solid;width:6rem;display:inline-block}@media (max-width:280px){.icon-separator div{width:3rem}}.icon-separator i{display:inline-block;padding:0 10px;top:.3em;font-size:2rem;position:relative} .bs-icon{--bs-icon-size:.75rem;display:flex;flex-shrink:0;justify-content:center;align-items:center;font-size:var(--bs-icon-size);width:calc(var(--bs-icon-size) * 2);height:calc(var(--bs-icon-size) * 2);color:var(--bs-primary)}.bs-icon-xs{--bs-icon-size:1rem;width:calc(var(--bs-icon-size) * 1.5);height:calc(var(--bs-icon-size) * 1.5)}.bs-icon-sm{--bs-icon-size:1rem}.bs-icon-md{--bs-icon-size:1.5rem}.bs-icon-lg{--bs-icon-size:2rem}.bs-icon-xl{--bs-icon-size:2.5rem}.bs-icon.bs-icon-primary{color:var(--bs-white);background:var(--bs-primary)}.bs-icon.bs-icon-primary-light{color:var(--bs-primary);background:rgba(var(--bs-primary-rgb),.2)}.bs-icon.bs-icon-semi-white{color:var(--bs-primary);background:rgba(255,255,255,.5)}.bs-icon.bs-icon-rounded{border-radius:.5rem}.bs-icon.bs-icon-circle{border-radius:50%}.icon-separator{font-size:0%;margin-bottom:50px}.icon-separator div{border:none;border-top:.25rem solid;width:6rem;display:inline-block}@media (max-width:280px){.icon-separator div{width:3rem}}.icon-separator i{display:inline-block;padding:0 10px;top:.3em;font-size:2rem;position:relative}
textarea {
resize: none;
}

View File

@ -7,13 +7,37 @@ const bcrypt = require("bcrypt");
const serverService = require("../../services/server.service"); const serverService = require("../../services/server.service");
router.get("/:server/users", async (req, res) => {
router.get("/:server", async (req, res) => {
try { try {
Server.findOne({ where: { hostname: req.params.server } }).then((server) => { Server.findOne({ where: { hostname: req.params.server } }).then((server) => {
if (server) { if (server) {
if (bcrypt.compareSync(req.body.secret, server.secret)) { if (bcrypt.compareSync(req.body.secret, server.secret)) {
serverService.getServerKeys(req.params.server).then((result) => { serverService.getServerUsers(req.params.server).then((result) => {
console.log(result[0].serverUsername)
var raw = ''
for (x in result) {
raw += '# ' + result[x].login + ' (' + result[x].userId + ')' + '\n' + result[x].serverUsername + '\n\n'
}
res.send(raw)
})
} else {
res.send("invalid request")
}
} else {
res.send("invalid request")
}
})
} catch (e) {
console.log(e)
}
});
router.get("/:server/key/:user", async (req, res) => {
try {
Server.findOne({ where: { hostname: req.params.server } }).then((server) => {
if (server) {
if (bcrypt.compareSync(req.body.secret, server.secret)) {
serverService.getServerUserKey(req.params.server, req.params.user).then((result) => {
var raw = '' var raw = ''
for (x in result) { for (x in result) {
raw += '# ' + x + '\n' + result[x] + '\n\n' raw += '# ' + x + '\n' + result[x] + '\n\n'
@ -35,26 +59,6 @@ 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; module.exports = router;

View File

@ -38,8 +38,8 @@ async function syncUser(user) {
login: user.login, login: user.login,
avatar: user.avatar_url, avatar: user.avatar_url,
displayName: user.name, displayName: user.name,
admin: (users.length === 1), admin: (users.length === 0),
serverUsername: false, serverUsername: user.login,
}).then(() => { }).then(() => {
console.log('user ' + user.login + ' added to database') console.log('user ' + user.login + ' added to database')

View File

@ -68,8 +68,8 @@ async function delServer(hostname) {
}); });
} }
async function getServerKeys(server) { async function getServerUserKey(server, serverUsername) {
const dump = await sequelize.query('SELECT name, content FROM servers JOIN accesses on accesses.serverHostname = servers.hostname JOIN members on members.groupName = accesses.groupName JOIN keys on keys.idOwner = members.userid WHERE serverHostname = \'' + server + '\'', {}); const dump = await sequelize.query('SELECT name, content FROM servers JOIN accesses on accesses.serverHostname = servers.hostname JOIN members on members.groupName = accesses.groupName JOIN keys on keys.idOwner = members.userid JOIN users on users.id= members.userid WHERE serverHostname = \'' + server + '\' AND serverUsername = \'' + serverUsername + '\'' , {});
result = {} result = {}
console.log(dump) console.log(dump)
for (x in dump) { for (x in dump) {
@ -85,7 +85,7 @@ async function getServerKeys(server) {
} }
async function getServerUsers(server) { 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 + '\'', {}); const dump = await sequelize.query('SELECT DISTINCT login, userId, 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] return dump[0]
} }
@ -114,7 +114,7 @@ module.exports = {
getServerUsers, getServerUsers,
addServer, addServer,
delServer, delServer,
getServerKeys, getServerUserKey,
getServerListForUserId, getServerListForUserId,
serverSecretDestroy serverSecretDestroy
}; };

View File

@ -27,12 +27,11 @@
<tr> <tr>
<td><%= key.name %></td> <td><%= key.name %></td>
<td><textarea class="form-control" rows="1" disabled><%= key.content %></textarea></td> <td><textarea class="form-control" disabled><%= key.content %></textarea></td>
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/keys/delete/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td> <td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/keys/delete/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td>
</tr> </tr>
<% }) %> <% }) %>
</tbody> </tbody>
</table> </table>
</div> </div>