payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
14 lines (13 loc) • 1.32 kB
JavaScript
// @ts-strict-ignore
/**
* Gets read and operation-level permissions for a given field based on cascading field permissions.
* @returns An object with the following properties:
* - `operation`: Whether the user has permission to perform the operation on the field (`create` or `update`).
* - `permissions`: The field-level permissions.
* - `read`: Whether the user has permission to read the field.
*/ export const getFieldPermissions = ({ field, operation, parentName, permissions })=>({
operation: permissions === true || permissions?.[operation] === true || permissions?.[parentName] === true || 'name' in field && typeof permissions === 'object' && permissions?.[field.name] && (permissions[field.name] === true || operation in permissions[field.name] && permissions[field.name][operation]),
permissions: permissions === undefined || permissions === null || permissions === true ? true : 'name' in field ? permissions?.[field.name] : permissions,
read: permissions === true || permissions?.read === true || permissions?.[parentName] === true || 'name' in field && typeof permissions === 'object' && permissions?.[field.name] && (permissions[field.name] === true || 'read' in permissions[field.name] && permissions[field.name].read)
});
//# sourceMappingURL=getFieldPermissions.js.map