|
@@ -19,6 +19,20 @@ function MediaToJson(mediaData) {
|
|
|
return mediaData;
|
|
return mediaData;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function accessToJson(access) {
|
|
|
|
|
+ const typeStr = [ "unknown", "ldapAccount", "email", "link", "every one" ][access.type];
|
|
|
|
|
+ const accessToStr = [ "unknown", "item", "tag", "meta", "everything", "admin"][access.accessTo];
|
|
|
|
|
+ const grantStr = [ "none", "read", "write", "read without meta"][access.grant];
|
|
|
|
|
+ return {
|
|
|
|
|
+ id: access.id,
|
|
|
|
|
+ type: typeStr,
|
|
|
|
|
+ typeData: access.typeData,
|
|
|
|
|
+ accessTo: accessToStr,
|
|
|
|
|
+ accessToData: access.accessToData,
|
|
|
|
|
+ grant: grantStr
|
|
|
|
|
+ };
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
module.exports = { register: app => {
|
|
module.exports = { register: app => {
|
|
|
app.router.post("/api/database/reload", (req, res) => {
|
|
app.router.post("/api/database/reload", (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
app.routerUtils.onApiRequest(req, res);
|
|
@@ -58,24 +72,47 @@ module.exports = { register: app => {
|
|
|
const result = Security.setAdmin(req, !!(access?.length || 0));
|
|
const result = Security.setAdmin(req, !!(access?.length || 0));
|
|
|
app.routerUtils.jsonResponse(res, result);
|
|
app.routerUtils.jsonResponse(res, result);
|
|
|
});
|
|
});
|
|
|
|
|
+ app.router.post("/api/accessAdmin/create", async (req, res) => {
|
|
|
|
|
+ app.routerUtils.onApiRequest(req, res);
|
|
|
|
|
+ if (!req.sessionObj?.accessList?.isAdmin || !req.body)
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ // FIXME
|
|
|
|
|
+ console.log(req.body);
|
|
|
|
|
+ app.routerUtils.jsonResponse(res, {});
|
|
|
|
|
+ });
|
|
|
|
|
+ app.router.del("/api/accessAdmin/:id", async (req, res) => {
|
|
|
|
|
+ app.routerUtils.onApiRequest(req, res);
|
|
|
|
|
+ if (!req.sessionObj?.accessList?.isAdmin || !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)
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ const access = (await app.databaseHelper.fetch(AccessModel, { id: parseInt(req.params.id) }))?.[0];
|
|
|
|
|
+ if (!access)
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ access.type = parseInt(req.body.typeId);
|
|
|
|
|
+ access.typeData = req.body.typeData;
|
|
|
|
|
+ access.accessTo = parseInt(req.body.accessToId);
|
|
|
|
|
+ access.accessToData = req.body.accessToData;
|
|
|
|
|
+ access.grant = parseInt(req.body.grant);
|
|
|
|
|
+ try {
|
|
|
|
|
+ app.databaseHelper.upsertOne(access);
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ }
|
|
|
|
|
+ app.routerUtils.jsonResponse(res, accessToJson(access));
|
|
|
|
|
+ });
|
|
|
app.router.get("/api/accessAdmin/list", async (req, res) => {
|
|
app.router.get("/api/accessAdmin/list", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
if (!req.sessionObj?.accessList?.isAdmin)
|
|
if (!req.sessionObj?.accessList?.isAdmin)
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
- const access = await app.databaseHelper.fetch(AccessModel);
|
|
|
|
|
- app.routerUtils.jsonResponse(res, access.map(i => {
|
|
|
|
|
- const typeStr = [ "unknown", "ldapAccount", "email", "link", "every one" ][i.type];
|
|
|
|
|
- const accessToStr = [ "unknown", "item", "tag", "meta", "everything", "admin"][i.accessTo];
|
|
|
|
|
- const grantStr = [ "none", "read", "write", "read without meta"][i.grant];
|
|
|
|
|
- return {
|
|
|
|
|
- id: i.id,
|
|
|
|
|
- type: typeStr,
|
|
|
|
|
- typeData: i.typeData,
|
|
|
|
|
- accessTo: accessToStr,
|
|
|
|
|
- accessToData: i.accessToData,
|
|
|
|
|
- grant: grantStr
|
|
|
|
|
- };
|
|
|
|
|
- }));
|
|
|
|
|
|
|
+ app.routerUtils.jsonResponse(res, (await app.databaseHelper.fetch(AccessModel)).map(accessToJson));
|
|
|
});
|
|
});
|
|
|
app.router.post("/api/media/:id/tag/del/:tag", async (req, res) => {
|
|
app.router.post("/api/media/:id/tag/del/:tag", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
app.routerUtils.onApiRequest(req, res);
|
|
@@ -124,7 +161,13 @@ module.exports = { register: app => {
|
|
|
await Promise.all(data.map(x => MediaService.updateVersionInDb(app, x.fixedSum)));
|
|
await Promise.all(data.map(x => MediaService.updateVersionInDb(app, x.fixedSum)));
|
|
|
|
|
|
|
|
let tag = data.map(x => new MediaFileTagModel(x.fixedSum, requestedTag, false));
|
|
let tag = data.map(x => new MediaFileTagModel(x.fixedSum, requestedTag, false));
|
|
|
- await app.databaseHelper.insertMultipleSameTable(tag);
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await app.databaseHelper.insertMultipleSameTable(tag);
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ }
|
|
|
const allMedias = await MediaService.fetchMultiple(app, checksum, req.sessionObj?.accessList, 0);
|
|
const allMedias = await MediaService.fetchMultiple(app, checksum, req.sessionObj?.accessList, 0);
|
|
|
app.routerUtils.jsonResponse(res, Object.keys(allMedias).map(x => allMedias[x]).map(x => MediaToJson(x)));
|
|
app.routerUtils.jsonResponse(res, Object.keys(allMedias).map(x => allMedias[x]).map(x => MediaToJson(x)));
|
|
|
});
|
|
});
|
|
@@ -151,7 +194,13 @@ module.exports = { register: app => {
|
|
|
} else {
|
|
} else {
|
|
|
let newMediaItemMedia = data.map(x => new MediaFileMetaModel(x.fixedSum, req.params.key, req.body.value, false));
|
|
let newMediaItemMedia = data.map(x => new MediaFileMetaModel(x.fixedSum, req.params.key, req.body.value, false));
|
|
|
await app.databaseHelper.remove(MediaFileMetaModel, { md5sum: data.map(x => x.fixedSum), key: req.params.key, fromFile: 0 });
|
|
await app.databaseHelper.remove(MediaFileMetaModel, { md5sum: data.map(x => x.fixedSum), key: req.params.key, fromFile: 0 });
|
|
|
- await app.databaseHelper.insertMultipleSameTable(newMediaItemMedia);
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await app.databaseHelper.insertMultipleSameTable(newMediaItemMedia);
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ return app.routerUtils.onBadRequest(res);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
const allMedias = await MediaService.fetchMultiple(app, checksum, req.sessionObj?.accessList);
|
|
const allMedias = await MediaService.fetchMultiple(app, checksum, req.sessionObj?.accessList);
|
|
|
app.routerUtils.jsonResponse(res, Object.keys(allMedias).map(x => allMedias[x]).map(x => MediaToJson(x)));
|
|
app.routerUtils.jsonResponse(res, Object.keys(allMedias).map(x => allMedias[x]).map(x => MediaToJson(x)));
|