UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

84 lines (83 loc) 9.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _commitTransaction = require("../../utilities/commitTransaction"); const _getEntityPolicies = require("../../utilities/getEntityPolicies"); const _initTransaction = require("../../utilities/initTransaction"); const _killTransaction = require("../../utilities/killTransaction"); const _adminInit = require("../../utilities/telemetry/events/adminInit"); const allOperations = [ 'create', 'read', 'update', 'delete' ]; async function accessOperation(args) { const { req, req: { payload: { config }, user } } = args; (0, _adminInit.adminInit)(req); const results = {}; const isLoggedIn = !!user; const userCollectionConfig = user && user.collection ? config.collections.find((collection)=>collection.slug === user.collection) : null; if (userCollectionConfig) { results.canAccessAdmin = userCollectionConfig.access.admin ? await userCollectionConfig.access.admin(args) : isLoggedIn; } else { results.canAccessAdmin = false; } try { const shouldCommit = await (0, _initTransaction.initTransaction)(req); await Promise.all(config.collections.map(async (collection)=>{ const collectionOperations = [ ...allOperations ]; if (collection.auth && typeof collection.auth.maxLoginAttempts !== 'undefined' && collection.auth.maxLoginAttempts !== 0) { collectionOperations.push('unlock'); } if (collection.versions) { collectionOperations.push('readVersions'); } const collectionPolicy = await (0, _getEntityPolicies.getEntityPolicies)({ entity: collection, operations: collectionOperations, req, type: 'collection' }); results.collections = { ...results.collections, [collection.slug]: collectionPolicy }; })); await Promise.all(config.globals.map(async (global)=>{ const globalOperations = [ 'read', 'update' ]; if (global.versions) { globalOperations.push('readVersions'); } const globalPolicy = await (0, _getEntityPolicies.getEntityPolicies)({ entity: global, operations: globalOperations, req, type: 'global' }); results.globals = { ...results.globals, [global.slug]: globalPolicy }; })); if (shouldCommit) await (0, _commitTransaction.commitTransaction)(req); return results; } catch (e) { await (0, _killTransaction.killTransaction)(req); throw e; } } const _default = accessOperation; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL29wZXJhdGlvbnMvYWNjZXNzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBbGxPcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25zIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGNvbW1pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbW1pdFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgZ2V0RW50aXR5UG9saWNpZXMgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZ2V0RW50aXR5UG9saWNpZXMnXG5pbXBvcnQgeyBpbml0VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvaW5pdFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsga2lsbFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2tpbGxUcmFuc2FjdGlvbidcbmltcG9ydCB7IGFkbWluSW5pdCBhcyBhZG1pbkluaXRUZWxlbWV0cnkgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdGVsZW1ldHJ5L2V2ZW50cy9hZG1pbkluaXQnXG5cbmNvbnN0IGFsbE9wZXJhdGlvbnM6IEFsbE9wZXJhdGlvbnNbXSA9IFsnY3JlYXRlJywgJ3JlYWQnLCAndXBkYXRlJywgJ2RlbGV0ZSddXG5cbnR5cGUgQXJndW1lbnRzID0ge1xuICByZXE6IFBheWxvYWRSZXF1ZXN0XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFjY2Vzc09wZXJhdGlvbihhcmdzOiBBcmd1bWVudHMpOiBQcm9taXNlPFBlcm1pc3Npb25zPiB7XG4gIGNvbnN0IHtcbiAgICByZXEsXG4gICAgcmVxOiB7XG4gICAgICBwYXlsb2FkOiB7IGNvbmZpZyB9LFxuICAgICAgdXNlcixcbiAgICB9LFxuICB9ID0gYXJnc1xuXG4gIGFkbWluSW5pdFRlbGVtZXRyeShyZXEpXG5cbiAgY29uc3QgcmVzdWx0cyA9IHt9IGFzIFBlcm1pc3Npb25zXG5cbiAgY29uc3QgaXNMb2dnZWRJbiA9ICEhdXNlclxuICBjb25zdCB1c2VyQ29sbGVjdGlvbkNvbmZpZyA9XG4gICAgdXNlciAmJiB1c2VyLmNvbGxlY3Rpb25cbiAgICAgID8gY29uZmlnLmNvbGxlY3Rpb25zLmZpbmQoKGNvbGxlY3Rpb24pID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlci5jb2xsZWN0aW9uKVxuICAgICAgOiBudWxsXG5cbiAgaWYgKHVzZXJDb2xsZWN0aW9uQ29uZmlnKSB7XG4gICAgcmVzdWx0cy5jYW5BY2Nlc3NBZG1pbiA9IHVzZXJDb2xsZWN0aW9uQ29uZmlnLmFjY2Vzcy5hZG1pblxuICAgICAgPyBhd2FpdCB1c2VyQ29sbGVjdGlvbkNvbmZpZy5hY2Nlc3MuYWRtaW4oYXJncylcbiAgICAgIDogaXNMb2dnZWRJblxuICB9IGVsc2Uge1xuICAgIHJlc3VsdHMuY2FuQWNjZXNzQWRtaW4gPSBmYWxzZVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBzaG91bGRDb21taXQgPSBhd2FpdCBpbml0VHJhbnNhY3Rpb24ocmVxKVxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29uZmlnLmNvbGxlY3Rpb25zLm1hcChhc3luYyAoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uT3BlcmF0aW9ucyA9IFsuLi5hbGxPcGVyYXRpb25zXVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjb2xsZWN0aW9uLmF1dGggJiZcbiAgICAgICAgICB0eXBlb2YgY29sbGVjdGlvbi5hdXRoLm1heExvZ2luQXR0ZW1wdHMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgY29sbGVjdGlvbi5hdXRoLm1heExvZ2luQXR0ZW1wdHMgIT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29sbGVjdGlvbk9wZXJhdGlvbnMucHVzaCgndW5sb2NrJylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2xsZWN0aW9uLnZlcnNpb25zKSB7XG4gICAgICAgICAgY29sbGVjdGlvbk9wZXJhdGlvbnMucHVzaCgncmVhZFZlcnNpb25zJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25Qb2xpY3kgPSBhd2FpdCBnZXRFbnRpdHlQb2xpY2llcyh7XG4gICAgICAgICAgZW50aXR5OiBjb2xsZWN0aW9uLFxuICAgICAgICAgIG9wZXJhdGlvbnM6IGNvbGxlY3Rpb25PcGVyYXRpb25zLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsXG4gICAgICAgIH0pXG4gICAgICAgIHJlc3VsdHMuY29sbGVjdGlvbnMgPSB7XG4gICAgICAgICAgLi4ucmVzdWx0cy5jb2xsZWN0aW9ucyxcbiAgICAgICAgICBbY29sbGVjdGlvbi5zbHVnXTogY29sbGVjdGlvblBvbGljeSxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjb25maWcuZ2xvYmFscy5tYXAoYXN5bmMgKGdsb2JhbCkgPT4ge1xuICAgICAgICBjb25zdCBnbG9iYWxPcGVyYXRpb25zOiBBbGxPcGVyYXRpb25zW10gPSBbJ3JlYWQnLCAndXBkYXRlJ11cblxuICAgICAgICBpZiAoZ2xvYmFsLnZlcnNpb25zKSB7XG4gICAgICAgICAgZ2xvYmFsT3BlcmF0aW9ucy5wdXNoKCdyZWFkVmVyc2lvbnMnKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ2xvYmFsUG9saWN5ID0gYXdhaXQgZ2V0RW50aXR5UG9saWNpZXMoe1xuICAgICAgICAgIGVudGl0eTogZ2xvYmFsLFxuICAgICAgICAgIG9wZXJhdGlvbnM6IGdsb2JhbE9wZXJhdGlvbnMsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHR5cGU6ICdnbG9iYWwnLFxuICAgICAgICB9KVxuICAgICAgICByZXN1bHRzLmdsb2JhbHMgPSB7XG4gICAgICAgICAgLi4ucmVzdWx0cy5nbG9iYWxzLFxuICAgICAgICAgIFtnbG9iYWwuc2x1Z106IGdsb2JhbFBvbGljeSxcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgaWYgKHNob3VsZENvbW1pdCkgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKVxuICAgIHJldHVybiByZXN1bHRzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBhd2FpdCBraWxsVHJhbnNhY3Rpb24ocmVxKVxuICAgIHRocm93IGVcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBhY2Nlc3NPcGVyYXRpb25cbiJdLCJuYW1lcyI6WyJhbGxPcGVyYXRpb25zIiwiYWNjZXNzT3BlcmF0aW9uIiwiYXJncyIsInJlcSIsInBheWxvYWQiLCJjb25maWciLCJ1c2VyIiwiYWRtaW5Jbml0VGVsZW1ldHJ5IiwicmVzdWx0cyIsImlzTG9nZ2VkSW4iLCJ1c2VyQ29sbGVjdGlvbkNvbmZpZyIsImNvbGxlY3Rpb24iLCJjb2xsZWN0aW9ucyIsImZpbmQiLCJzbHVnIiwiY2FuQWNjZXNzQWRtaW4iLCJhY2Nlc3MiLCJhZG1pbiIsInNob3VsZENvbW1pdCIsImluaXRUcmFuc2FjdGlvbiIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJjb2xsZWN0aW9uT3BlcmF0aW9ucyIsImF1dGgiLCJtYXhMb2dpbkF0dGVtcHRzIiwicHVzaCIsInZlcnNpb25zIiwiY29sbGVjdGlvblBvbGljeSIsImdldEVudGl0eVBvbGljaWVzIiwiZW50aXR5Iiwib3BlcmF0aW9ucyIsInR5cGUiLCJnbG9iYWxzIiwiZ2xvYmFsIiwiZ2xvYmFsT3BlcmF0aW9ucyIsImdsb2JhbFBvbGljeSIsImNvbW1pdFRyYW5zYWN0aW9uIiwiZSIsImtpbGxUcmFuc2FjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1R0E7OztlQUFBOzs7bUNBbkdrQzttQ0FDQTtpQ0FDRjtpQ0FDQTsyQkFDZ0I7QUFFaEQsTUFBTUEsZ0JB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