UNPKG

@openinc/parse-server-opendash

Version:
76 lines (75 loc) 2.82 kB
"use strict"; 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.Tenant, async (request) => { const { object, original, user } = request; await (0, __1.defaultHandler)(request); await (0, __1.immutableField)(request, "tagPrefix", "opendash:tenant:change-tag-prefix"); if (object.id) { object.setACL(new Parse.ACL({ [`role:od-tenant-user-${object.id}`]: { read: true, }, [`role:od-tenant-admin-${object.id}`]: { read: true, write: true, }, [`role:od-admin`]: { read: true, write: true, }, })); // Handle default tag prefix if (request.context.beforeSaveAfterCreation) { if (!object.get("tagPrefix")) object.set("tagPrefix", `tenant-${object.id}-`); } // Handle Data Source const rootSource = await new Parse.Query(types_1.Source) .equalTo("tag", "tenant-root-source") .first({ useMasterKey: true }); const sourceACL = new Parse.ACL({ [`role:od-tenant-user-${object.id}`]: { read: true, }, }); let dataSource = object.get("dataSource"); if (!dataSource) { dataSource = new types_1.Source(); } dataSource.setACL(sourceACL); if (rootSource) { dataSource.set("parent", rootSource); } dataSource.set("name", object.get("label")); dataSource.set("tag", `tenant-data-${object.id}`); await dataSource.save(null, { useMasterKey: true }); object.set("dataSource", dataSource); } }); (0, __1.afterSaveHook)(types_1.Tenant, async ({ object, original, user }) => { await (0, __1.ensureRole)(`od-tenant-admin-${object.id}`, { label: `${object.get("label")} (Admin)`, }); await (0, __1.ensureRole)(`od-tenant-user-${object.id}`, { label: object.get("label"), acl: new Parse.ACL({ [`role:od-tenant-user-${object.id}`]: { read: true, }, }), }); if (!original) { // trigger beforeSave after creation await object.save(null, { useMasterKey: true, context: { beforeSaveAfterCreation: true, }, }); } }); }