payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
84 lines (83 loc) • 9.91 kB
JavaScript
;
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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