Files
klz-cables.com/.pnpm-store/v10/files/1b/d3a6656be8d46cbe3896f70bccd9632b8f9374ece078f2e5497ed3e1361266a89886173ae08ac11f36b016e655782abd553af7ec52d67cb74226d23f4754a9
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

40 lines
2.6 KiB
Plaintext

/* eslint-disable @typescript-eslint/no-explicit-any */ /**
* 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 = ({ collectionPermissions, field, operation, parentName, permissions })=>{
// First, calculate permissions using the existing logic
const fieldOperation = 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]);
const fieldPermissions = permissions === undefined || permissions === null || permissions === true ? true : 'name' in field ? permissions[field.name] : permissions;
const fieldRead = 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);
// Check if field permissions are effectively empty/missing
const hasFieldPermissions = permissions === true || typeof permissions === 'object' && permissions !== null && Object.keys(permissions).length > 0;
// If no field permissions are defined, fallback to collection permissions
if (!hasFieldPermissions && collectionPermissions) {
const collectionRead = Boolean(collectionPermissions.read);
let collectionOperation = false;
// Check operation-specific permission on collection
if (operation === 'create' && 'create' in collectionPermissions) {
collectionOperation = Boolean(collectionPermissions.create);
} else if (operation === 'update') {
collectionOperation = Boolean(collectionPermissions.update);
}
return {
operation: collectionOperation,
permissions: {
read: collectionRead
},
read: collectionRead
};
}
// Return the calculated permissions
return {
operation: Boolean(fieldOperation),
permissions: fieldPermissions,
read: Boolean(fieldRead)
};
};
//# sourceMappingURL=getFieldPermissions.js.map