✨ Add key management to admin settings
This commit is contained in:
@ -6,6 +6,11 @@ export function registerAdmin(app) {
|
||||
app.post("/api/admin/timetable", createTimetable);
|
||||
app.put("/api/admin/timetable", editTimetable);
|
||||
app.delete("/api/admin/timetable", deleteTimetable);
|
||||
|
||||
app.get("/api/admin/key", listKeys);
|
||||
app.post("/api/admin/key", createKey);
|
||||
app.put("/api/admin/key", editKey);
|
||||
app.delete("/api/admin/key", deleteKey);
|
||||
}
|
||||
|
||||
function sendMissingArguments(res) {
|
||||
@ -76,3 +81,72 @@ async function deleteTimetable(req, res) {
|
||||
res.status(500).send(e);
|
||||
}
|
||||
}
|
||||
|
||||
async function listKeys(_, res) {
|
||||
res.send(await prisma.key.findMany());
|
||||
}
|
||||
|
||||
async function createKey(req, res) {
|
||||
let data = req.body;
|
||||
if (!data.key) {
|
||||
sendMissingArguments(res);
|
||||
return;
|
||||
}
|
||||
const existingKey = await prisma.key.findUnique({
|
||||
where: {
|
||||
key: data.key,
|
||||
},
|
||||
});
|
||||
if (existingKey) {
|
||||
res.status(400).send({
|
||||
success: false,
|
||||
error: "key_already_exists",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const key = await prisma.key.create({
|
||||
data: {
|
||||
key: data.key,
|
||||
permissions: data.permissions || [],
|
||||
validUntil: data.validUntil,
|
||||
notes: data.notes,
|
||||
},
|
||||
});
|
||||
res.status(201).send(key);
|
||||
}
|
||||
|
||||
async function editKey(req, res) {
|
||||
if (!req.query.id) {
|
||||
sendMissingArguments(res);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const timetable = await prisma.key.update({
|
||||
where: {
|
||||
key: req.query.id,
|
||||
},
|
||||
data: req.body,
|
||||
});
|
||||
res.status(201).send(timetable);
|
||||
} catch (e) {
|
||||
res.status(500).send(e);
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteKey(req, res) {
|
||||
if (!req.query.id) {
|
||||
sendMissingArguments(res);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
await prisma.key.delete({
|
||||
where: {
|
||||
key: req.query.id,
|
||||
},
|
||||
});
|
||||
res.status(200).send();
|
||||
} catch (e) {
|
||||
res.status(500).send(e);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user