@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
47 lines (46 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
const __1 = require("..");
const types_1 = require("../types");
async function init() {
(0, __1.beforeSaveHook)(types_1.BDE_Page, async (request) => {
const { object, original, user } = request;
request.context.dirtyKeys = object.dirtyKeys();
const query = new Parse.Query(types_1.BDE_Form).equalTo("entries", object.id // Fix Parse SDK type error
);
const affectedForms = await query.find({ useMasterKey: true });
const aclCandidates = {};
affectedForms.forEach((form) => {
const formAcl = form.getACL()?.toJSON();
const keys = Object.keys(formAcl);
for (const userOrRole of keys) {
if (!aclCandidates[userOrRole]) {
aclCandidates[userOrRole] = { read: false, write: false };
}
aclCandidates[userOrRole].read =
formAcl[userOrRole].read || aclCandidates[userOrRole].read;
aclCandidates[userOrRole].write =
formAcl[userOrRole].write || aclCandidates[userOrRole].write;
}
const newAcl = new Parse.ACL(aclCandidates);
object.setACL(newAcl);
});
});
(0, __1.afterSaveHook)(types_1.BDE_Page, async (request) => {
const { object, original, user } = request;
const query = new Parse.Query(types_1.BDE_Form).equalTo("entries", object.id // Fix Parse SDK type error
);
const affectedForms = await query.find({ useMasterKey: true });
const dirtyKeys = request.context.dirtyKeys;
if (dirtyKeys.length > 0 && dirtyKeys[0] !== "acl")
await Parse.Object.saveAll(affectedForms, { useMasterKey: true });
});
(0, __1.afterDeleteHook)(types_1.BDE_Page, async (request) => {
const { object, original, user } = request;
const query = new Parse.Query(types_1.BDE_Form).equalTo("entries", object.id // Fix Parse SDK type error
);
const affectedForms = await query.find({ useMasterKey: true });
await Parse.Object.saveAll(affectedForms, { useMasterKey: true });
});
}