UNPKG

@forestadmin/forestadmin-client

Version:

This package contains the logic to use the ForestAdmin API inside an agent.

104 lines 9.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const generate_action_identifier_1 = require("./generate-action-identifier"); const types_1 = require("./types"); function generateCollectionPermissions(permissions) { return Object.entries(permissions).reduce((acc, [collectionId, collectionPermissions]) => { const { collection } = collectionPermissions; return { ...acc, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Browse, collectionId)]: { description: collection.browseEnabled, }, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Read, collectionId)]: { description: collection.readEnabled, }, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Edit, collectionId)]: { description: collection.editEnabled, }, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Add, collectionId)]: { description: collection.addEnabled, }, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Delete, collectionId)]: { description: collection.deleteEnabled, }, [(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Export, collectionId)]: { description: collection.exportEnabled, }, }; }, {}); } function generateCustomActionPermission(collectionId, actions) { return Object.entries(actions).reduce((acc, [actionName, actionPermissions]) => { return { ...acc, ...{ [(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, actionName, collectionId)]: { description: actionPermissions.userApprovalEnabled, conditions: actionPermissions.userApprovalConditions, }, [(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.SelfApprove, actionName, collectionId)]: { description: actionPermissions.selfApprovalEnabled, }, [(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, actionName, collectionId)]: { description: actionPermissions.triggerEnabled, conditions: actionPermissions.triggerConditions, }, [(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, actionName, collectionId)]: { description: actionPermissions.approvalRequired, conditions: actionPermissions.approvalRequiredConditions, }, }, }; }, {}); } function generateActionPermissions(permissions) { return Object.entries(permissions).reduce((acc, [collectionId, collectionPermissions]) => { const { actions } = collectionPermissions; return { ...acc, ...generateCustomActionPermission(collectionId, actions), }; }, {}); } function generateActionsGloballyAllowed(permissions) { return new Set(Object.entries(permissions) .filter(([, permission]) => permission.description === true) .map(([action]) => action)); } function generateActionsByRole(permissions) { return new Map(Object.entries(permissions) .filter(([, permission]) => typeof permission.description !== 'boolean') .map(([name, permission]) => [ name, { allowedRoles: new Set(permission.description.roles), ...(permission.conditions ? { conditionsByRole: new Map(permission.conditions?.map(({ roleId, filter }) => [roleId, filter])), } : {}), }, ])); } function generateActionsFromPermissions(environmentPermissions) { if (environmentPermissions === true) { return { isDevelopment: true, actionsGloballyAllowed: new Set(), actionsByRole: new Map(), }; } const remotePermissions = environmentPermissions; const allPermissions = { ...generateCollectionPermissions(remotePermissions.collections), ...generateActionPermissions(remotePermissions.collections), }; return { isDevelopment: false, actionsGloballyAllowed: generateActionsGloballyAllowed(allPermissions), actionsByRole: generateActionsByRole(allPermissions), }; } exports.default = generateActionsFromPermissions; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtYWN0aW9ucy1mcm9tLXBlcm1pc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2dlbmVyYXRlLWFjdGlvbnMtZnJvbS1wZXJtaXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZFQUdzQztBQUN0QyxtQ0FXaUI7QUFvQmpCLFNBQVMsNkJBQTZCLENBQ3BDLFdBQWdEO0lBRWhELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsRUFBRSxFQUFFO1FBQ3ZGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsR0FBRyxHQUFHO1lBQ04sQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixXQUFXLEVBQUUsVUFBVSxDQUFDLGFBQWE7YUFDdEM7WUFDRCxDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUU7Z0JBQzlFLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVzthQUNwQztZQUNELENBQUMsSUFBQSwrREFBa0MsRUFBQyw2QkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRTtnQkFDOUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO2FBQ3BDO1lBQ0QsQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFO2dCQUM3RSxXQUFXLEVBQUUsVUFBVSxDQUFDLFVBQVU7YUFDbkM7WUFDRCxDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVB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