|
|
@@ -6,7 +6,7 @@ const Security = require('../src/security.js');
|
|
|
const MediaService = require('../model/mediaService.js');
|
|
|
const MediaFileMetaModel = require('../model/mediaItemMeta.js').MediaFileMetaModel;
|
|
|
const MediaFileTagModel = require('../model/mediaItemTag.js').MediaFileTagModel;
|
|
|
-const { AccessModel, ACCESS_TYPE, ACCESS_GRANT } = require('../model/access.js');
|
|
|
+const { AccessModel, ACCESS_TYPE, ACCESS_GRANT, ACCESS_TO } = require('../model/access.js');
|
|
|
|
|
|
function MediaToJson(mediaData) {
|
|
|
if (!mediaData)
|
|
|
@@ -37,18 +37,25 @@ module.exports = { register: app => {
|
|
|
return app.routerUtils.httpResponse(res, 400, "Missing argument");
|
|
|
try {
|
|
|
for (let i of JSON.parse(req.post.linkIds)) {
|
|
|
- if (await app.databaseHelper.findOne(AccessModel, { type: ACCESS_TYPE.link, typeData: i }))
|
|
|
- Security.addLinkToSession(req, i);
|
|
|
+ const access = await app.databaseHelper.findOne(AccessModel, { type: ACCESS_TYPE.link, typeData: i });
|
|
|
+ if (access) {
|
|
|
+ Security.addLinkToSession(req, access.id, i);
|
|
|
+ if (access.accessTo == ACCESS_TO.admin)
|
|
|
+ Security.setAdmin(req, true);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
catch (err) {
|
|
|
+ console.error(err);
|
|
|
return app.routerUtils.onBadRequest(res);
|
|
|
}
|
|
|
app.routerUtils.jsonResponse(res, req.sessionObj.accessList);
|
|
|
});
|
|
|
- app.router.del("/api/access/:id", (req, res) => {
|
|
|
+ app.router.del("/api/access/:id", async (req, res) => {
|
|
|
app.routerUtils.onApiRequest(req, res);
|
|
|
- const result = Security.removeFromSession(req, req.params.id);
|
|
|
+ Security.removeFromSession(req, req.params.id);
|
|
|
+ const access = await app.databaseHelper.fetch(AccessModel, { id: Object.keys(req.sessionObj.accessList).map(i => req.sessionObj.accessList[i]).filter(x => x.dbId).map(x => x.dbId), accessTo: ACCESS_TO.admin });
|
|
|
+ const result = Security.setAdmin(req, !!(access?.length || 0));
|
|
|
app.routerUtils.jsonResponse(res, result);
|
|
|
});
|
|
|
app.router.post("/api/media/:id/tag/del/:tag", async (req, res) => {
|