|
|
@@ -34,17 +34,26 @@ function accessToJson(access) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+async function accessListToJson(app, req) {
|
|
|
+ let result = {
|
|
|
+ ...(req.sessionObj?.accessList || {})
|
|
|
+ };
|
|
|
+ result.isAdmin = await req.sessionObj?.accessList?.isAdmin?.(app, result) || false;
|
|
|
+ delete result.isAdmin_;
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
module.exports = { register: app => {
|
|
|
- app.router.post("/api/database/reload", (req, res) => {
|
|
|
+ app.router.post("/api/database/reload", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- if (!req.sessionObj?.accessList?.isAdmin)
|
|
|
+ if (!await req.sessionObj?.accessList?.isAdmin(app, req.sessionObj?.accessList))
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
app.libraryManager.updateLibraries(app.databaseHelper).finally(x => { require('../src/autotagBuilder').rebuildPathTags(app); });
|
|
|
app.routerUtils.jsonResponse(res, {});
|
|
|
});
|
|
|
- app.router.get("/api/access/list", (req, res) => {
|
|
|
+ app.router.get("/api/access/list", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- app.routerUtils.jsonResponse(res, req.sessionObj?.accessList || {});
|
|
|
+ app.routerUtils.jsonResponse(res, await accessListToJson(app, req));
|
|
|
});
|
|
|
app.router.post("/api/access/link", async (req, res) => { // /api/access/link, post: { linkIds: [string] (JSON) }
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -64,7 +73,7 @@ module.exports = { register: app => {
|
|
|
console.error(err);
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
}
|
|
|
- app.routerUtils.jsonResponse(res, req.sessionObj.accessList);
|
|
|
+ app.routerUtils.jsonResponse(res, await accessListToJson(app, req));
|
|
|
});
|
|
|
app.router.del("/api/access/:id", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
@@ -75,7 +84,7 @@ module.exports = { register: app => {
|
|
|
});
|
|
|
app.router.post("/api/accessAdmin/create", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- if (!req.sessionObj?.accessList?.isAdmin || !req.body)
|
|
|
+ if (!await req.sessionObj?.accessList?.isAdmin(app, req.sessionObj?.accessList) || !req.body)
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
let access = new AccessModel();
|
|
|
access.type = parseInt(req.body.typeId);
|
|
|
@@ -95,14 +104,14 @@ module.exports = { register: app => {
|
|
|
});
|
|
|
app.router.del("/api/accessAdmin/:id", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- if (!req.sessionObj?.accessList?.isAdmin || !req.params.id)
|
|
|
+ if (!await req.sessionObj?.accessList?.isAdmin(app, req.sessionObj?.accessList) || !req.params.id)
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
app.databaseHelper.remove(AccessModel, { id: parseInt(req.params.id) });
|
|
|
app.routerUtils.jsonResponse(res, {});
|
|
|
});
|
|
|
app.router.post("/api/accessAdmin/:id", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- if (!req.sessionObj?.accessList?.isAdmin || !req.params.id || !req.body)
|
|
|
+ if (!await req.sessionObj?.accessList?.isAdmin(app, req.sessionObj?.accessList) || !req.params.id || !req.body)
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
const access = (await app.databaseHelper.fetch(AccessModel, { id: parseInt(req.params.id) }))?.[0];
|
|
|
if (!access)
|
|
|
@@ -123,7 +132,7 @@ module.exports = { register: app => {
|
|
|
});
|
|
|
app.router.get("/api/accessAdmin/list", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- if (!req.sessionObj?.accessList?.isAdmin)
|
|
|
+ if (!await req.sessionObj?.accessList?.isAdmin(app, req.sessionObj?.accessList))
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
app.routerUtils.jsonResponse(res, (await app.databaseHelper.fetch(AccessModel)).map(accessToJson));
|
|
|
});
|