@payloadcms/plugin-multi-tenant 3.61.0-internal.dd40839 → 3.62.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"addFilterOptionsToFields.d.ts","sourceRoot":"","sources":["../../src/utilities/addFilterOptionsToFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,KAAK,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAA;AAEvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAK1D,KAAK,4BAA4B,CAAC,UAAU,GAAG,OAAO,IAAI;IACxD,0BAA0B,EAAE,MAAM,EAAE,CAAA;IACpC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,4BAA4B,EAAE,MAAM,EAAE,CAAA;IACtC,wBAAwB,EAAE,MAAM,EAAE,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,2BAA2B,EAAE,MAAM,CAAA;IACnC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,yBAAyB,EAAE,QAAQ,CACjC,uBAAuB,CAAC,UAAU,CAAC,CACpC,CAAC,2BAA2B,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAgB,wBAAwB,CAAC,UAAU,GAAG,OAAO,EAAE,EAC7D,0BAA0B,EAC1B,MAAM,EACN,MAAM,EACN,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,qBAAsD,EACtD,2BAAkE,EAClE,qBAAqB,EACrB,yBAAyB,GAC1B,EAAE,4BAA4B,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAiIpD"}
1
+ {"version":3,"file":"addFilterOptionsToFields.d.ts","sourceRoot":"","sources":["../../src/utilities/addFilterOptionsToFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,EAAE,KAAK,EAAqB,eAAe,EAAE,MAAM,SAAS,CAAA;AAEvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAK1D,KAAK,4BAA4B,CAAC,UAAU,GAAG,OAAO,IAAI;IACxD,0BAA0B,EAAE,MAAM,EAAE,CAAA;IACpC,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,4BAA4B,EAAE,MAAM,EAAE,CAAA;IACtC,wBAAwB,EAAE,MAAM,EAAE,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,2BAA2B,EAAE,MAAM,CAAA;IACnC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,yBAAyB,EAAE,QAAQ,CACjC,uBAAuB,CAAC,UAAU,CAAC,CACpC,CAAC,2BAA2B,CAAC,CAAA;CAC/B,CAAA;AAED,wBAAgB,wBAAwB,CAAC,UAAU,GAAG,OAAO,EAAE,EAC7D,0BAA0B,EAC1B,MAAM,EACN,MAAM,EACN,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,qBAAsD,EACtD,2BAAkE,EAClE,qBAAqB,EACrB,yBAAyB,GAC1B,EAAE,4BAA4B,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,CAmIpD"}
@@ -62,10 +62,12 @@ export function addFilterOptionsToFields({ blockReferencesWithFilters, config, f
62
62
  const newBlocks = [];
63
63
  (newField.blockReferences ?? newField.blocks).forEach((_block)=>{
64
64
  let block;
65
+ let isReference = false;
65
66
  if (typeof _block === 'string') {
66
67
  if (blockReferencesWithFilters.includes(_block)) {
67
68
  return;
68
69
  }
70
+ isReference = true;
69
71
  block = config?.blocks?.find((b)=>b.slug === _block);
70
72
  blockReferencesWithFilters.push(_block);
71
73
  } else {
@@ -88,7 +90,7 @@ export function addFilterOptionsToFields({ blockReferencesWithFilters, config, f
88
90
  userHasAccessToAllTenants
89
91
  });
90
92
  }
91
- if (block) {
93
+ if (block && !isReference) {
92
94
  newBlocks.push(block);
93
95
  }
94
96
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/addFilterOptionsToFields.ts"],"sourcesContent":["import type { Block, Config, Field, RelationshipField, SanitizedConfig } from 'payload'\n\nimport type { MultiTenantPluginConfig } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { filterDocumentsByTenants } from '../filters/filterDocumentsByTenants.js'\n\ntype AddFilterOptionsToFieldsArgs<ConfigType = unknown> = {\n blockReferencesWithFilters: string[]\n config: Config | SanitizedConfig\n fields: Field[]\n tenantEnabledCollectionSlugs: string[]\n tenantEnabledGlobalSlugs: string[]\n tenantFieldName: string\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants']\n}\n\nexport function addFilterOptionsToFields<ConfigType = unknown>({\n blockReferencesWithFilters,\n config,\n fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName = defaults.tenantsArrayFieldName,\n tenantsArrayTenantFieldName = defaults.tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n}: AddFilterOptionsToFieldsArgs<ConfigType>): Field[] {\n const newFields = []\n for (const field of fields) {\n let newField: Field = { ...field }\n if (newField.type === 'relationship') {\n /**\n * Adjusts relationship fields to filter by tenant\n * and ensures relationTo cannot be a tenant global collection\n */\n if (typeof newField.relationTo === 'string') {\n if (tenantEnabledGlobalSlugs.includes(newField.relationTo)) {\n throw new Error(\n `The collection ${newField.relationTo} is a global collection and cannot be related to a tenant enabled collection.`,\n )\n }\n if (tenantEnabledCollectionSlugs.includes(newField.relationTo)) {\n newField = addFilter({\n field: newField,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n } else {\n for (const relationTo of newField.relationTo) {\n if (tenantEnabledGlobalSlugs.includes(relationTo)) {\n throw new Error(\n `The collection ${relationTo} is a global collection and cannot be related to a tenant enabled collection.`,\n )\n }\n if (tenantEnabledCollectionSlugs.includes(relationTo)) {\n newField = addFilter({\n field: newField as RelationshipField,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n }\n }\n }\n\n if (\n newField.type === 'row' ||\n newField.type === 'array' ||\n newField.type === 'collapsible' ||\n newField.type === 'group'\n ) {\n newField.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: newField.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n\n if (newField.type === 'blocks') {\n const newBlocks: Block[] = []\n ;(newField.blockReferences ?? newField.blocks).forEach((_block) => {\n let block: Block | undefined\n\n if (typeof _block === 'string') {\n if (blockReferencesWithFilters.includes(_block)) {\n return\n }\n block = config?.blocks?.find((b) => b.slug === _block)\n blockReferencesWithFilters.push(_block)\n } else {\n // Create a shallow copy to avoid mutating the original block reference\n block = { ..._block }\n }\n\n if (block?.fields) {\n block.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: block.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n\n if (block) {\n newBlocks.push(block)\n }\n })\n newField.blocks = newBlocks\n }\n\n if (newField.type === 'tabs') {\n newField.tabs = newField.tabs.map((tab) => {\n const newTab = { ...tab }\n newTab.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: tab.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n return newTab\n })\n }\n\n newFields.push(newField)\n }\n\n return newFields\n}\n\ntype AddFilterArgs<ConfigType = unknown> = {\n field: RelationshipField\n tenantEnabledCollectionSlugs: string[]\n tenantFieldName: string\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants']\n}\nfunction addFilter<ConfigType = unknown>({\n field,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName = defaults.tenantsArrayFieldName,\n tenantsArrayTenantFieldName = defaults.tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n}: AddFilterArgs<ConfigType>): Field {\n // User specified filter\n const originalFilter = field.filterOptions\n field.filterOptions = async (args) => {\n const originalFilterResult =\n typeof originalFilter === 'function' ? await originalFilter(args) : (originalFilter ?? true)\n\n // If the relationTo is not a tenant enabled collection, return early\n if (args.relationTo && !tenantEnabledCollectionSlugs.includes(args.relationTo)) {\n return originalFilterResult\n }\n\n // If the original filtr returns false, return early\n if (originalFilterResult === false) {\n return false\n }\n\n // Custom tenant filter\n const tenantFilterResults = filterDocumentsByTenants({\n docTenantID: args.data?.[tenantFieldName],\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n // If the tenant filter returns null, meaning no tenant filter, just use the original filter\n if (tenantFilterResults === null) {\n return originalFilterResult\n }\n\n // If the original filter returns true, just use the tenant filter\n if (originalFilterResult === true) {\n return tenantFilterResults\n }\n\n return {\n and: [originalFilterResult, tenantFilterResults],\n }\n }\n\n return field\n}\n"],"names":["defaults","filterDocumentsByTenants","addFilterOptionsToFields","blockReferencesWithFilters","config","fields","tenantEnabledCollectionSlugs","tenantEnabledGlobalSlugs","tenantFieldName","tenantsArrayFieldName","tenantsArrayTenantFieldName","tenantsCollectionSlug","userHasAccessToAllTenants","newFields","field","newField","type","relationTo","includes","Error","addFilter","newBlocks","blockReferences","blocks","forEach","_block","block","find","b","slug","push","tabs","map","tab","newTab","originalFilter","filterOptions","args","originalFilterResult","tenantFilterResults","docTenantID","data","filterFieldName","req","and"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,wBAAwB,QAAQ,yCAAwC;AAiBjF,OAAO,SAASC,yBAA+C,EAC7DC,0BAA0B,EAC1BC,MAAM,EACNC,MAAM,EACNC,4BAA4B,EAC5BC,wBAAwB,EACxBC,eAAe,EACfC,wBAAwBT,SAASS,qBAAqB,EACtDC,8BAA8BV,SAASU,2BAA2B,EAClEC,qBAAqB,EACrBC,yBAAyB,EACgB;IACzC,MAAMC,YAAY,EAAE;IACpB,KAAK,MAAMC,SAAST,OAAQ;QAC1B,IAAIU,WAAkB;YAAE,GAAGD,KAAK;QAAC;QACjC,IAAIC,SAASC,IAAI,KAAK,gBAAgB;YACpC;;;OAGC,GACD,IAAI,OAAOD,SAASE,UAAU,KAAK,UAAU;gBAC3C,IAAIV,yBAAyBW,QAAQ,CAACH,SAASE,UAAU,GAAG;oBAC1D,MAAM,IAAIE,MACR,CAAC,eAAe,EAAEJ,SAASE,UAAU,CAAC,6EAA6E,CAAC;gBAExH;gBACA,IAAIX,6BAA6BY,QAAQ,CAACH,SAASE,UAAU,GAAG;oBAC9DF,WAAWK,UAAU;wBACnBN,OAAOC;wBACPT;wBACAE;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;YACF,OAAO;gBACL,KAAK,MAAMK,cAAcF,SAASE,UAAU,CAAE;oBAC5C,IAAIV,yBAAyBW,QAAQ,CAACD,aAAa;wBACjD,MAAM,IAAIE,MACR,CAAC,eAAe,EAAEF,WAAW,6EAA6E,CAAC;oBAE/G;oBACA,IAAIX,6BAA6BY,QAAQ,CAACD,aAAa;wBACrDF,WAAWK,UAAU;4BACnBN,OAAOC;4BACPT;4BACAE;4BACAC;4BACAC;4BACAC;4BACAC;wBACF;oBACF;gBACF;YACF;QACF;QAEA,IACEG,SAASC,IAAI,KAAK,SAClBD,SAASC,IAAI,KAAK,WAClBD,SAASC,IAAI,KAAK,iBAClBD,SAASC,IAAI,KAAK,SAClB;YACAD,SAASV,MAAM,GAAGH,yBAAyB;gBACzCC;gBACAC;gBACAC,QAAQU,SAASV,MAAM;gBACvBC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QACF;QAEA,IAAIG,SAASC,IAAI,KAAK,UAAU;YAC9B,MAAMK,YAAqB,EAAE;YAC3BN,CAAAA,SAASO,eAAe,IAAIP,SAASQ,MAAM,AAAD,EAAGC,OAAO,CAAC,CAACC;gBACtD,IAAIC;gBAEJ,IAAI,OAAOD,WAAW,UAAU;oBAC9B,IAAItB,2BAA2Be,QAAQ,CAACO,SAAS;wBAC/C;oBACF;oBACAC,QAAQtB,QAAQmB,QAAQI,KAAK,CAACC,IAAMA,EAAEC,IAAI,KAAKJ;oBAC/CtB,2BAA2B2B,IAAI,CAACL;gBAClC,OAAO;oBACL,uEAAuE;oBACvEC,QAAQ;wBAAE,GAAGD,MAAM;oBAAC;gBACtB;gBAEA,IAAIC,OAAOrB,QAAQ;oBACjBqB,MAAMrB,MAAM,GAAGH,yBAAyB;wBACtCC;wBACAC;wBACAC,QAAQqB,MAAMrB,MAAM;wBACpBC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;gBACF;gBAEA,IAAIc,OAAO;oBACTL,UAAUS,IAAI,CAACJ;gBACjB;YACF;YACAX,SAASQ,MAAM,GAAGF;QACpB;QAEA,IAAIN,SAASC,IAAI,KAAK,QAAQ;YAC5BD,SAASgB,IAAI,GAAGhB,SAASgB,IAAI,CAACC,GAAG,CAAC,CAACC;gBACjC,MAAMC,SAAS;oBAAE,GAAGD,GAAG;gBAAC;gBACxBC,OAAO7B,MAAM,GAAGH,yBAAyB;oBACvCC;oBACAC;oBACAC,QAAQ4B,IAAI5B,MAAM;oBAClBC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;oBACAC;gBACF;gBACA,OAAOsB;YACT;QACF;QAEArB,UAAUiB,IAAI,CAACf;IACjB;IAEA,OAAOF;AACT;AAaA,SAASO,UAAgC,EACvCN,KAAK,EACLR,4BAA4B,EAC5BE,eAAe,EACfC,wBAAwBT,SAASS,qBAAqB,EACtDC,8BAA8BV,SAASU,2BAA2B,EAClEC,qBAAqB,EACrBC,yBAAyB,EACC;IAC1B,wBAAwB;IACxB,MAAMuB,iBAAiBrB,MAAMsB,aAAa;IAC1CtB,MAAMsB,aAAa,GAAG,OAAOC;QAC3B,MAAMC,uBACJ,OAAOH,mBAAmB,aAAa,MAAMA,eAAeE,QAASF,kBAAkB;QAEzF,qEAAqE;QACrE,IAAIE,KAAKpB,UAAU,IAAI,CAACX,6BAA6BY,QAAQ,CAACmB,KAAKpB,UAAU,GAAG;YAC9E,OAAOqB;QACT;QAEA,oDAAoD;QACpD,IAAIA,yBAAyB,OAAO;YAClC,OAAO;QACT;QAEA,uBAAuB;QACvB,MAAMC,sBAAsBtC,yBAAyB;YACnDuC,aAAaH,KAAKI,IAAI,EAAE,CAACjC,gBAAgB;YACzCkC,iBAAiBlC;YACjBmC,KAAKN,KAAKM,GAAG;YACblC;YACAC;YACAC;YACAC;QACF;QAEA,4FAA4F;QAC5F,IAAI2B,wBAAwB,MAAM;YAChC,OAAOD;QACT;QAEA,kEAAkE;QAClE,IAAIA,yBAAyB,MAAM;YACjC,OAAOC;QACT;QAEA,OAAO;YACLK,KAAK;gBAACN;gBAAsBC;aAAoB;QAClD;IACF;IAEA,OAAOzB;AACT"}
1
+ {"version":3,"sources":["../../src/utilities/addFilterOptionsToFields.ts"],"sourcesContent":["import type { Block, Config, Field, RelationshipField, SanitizedConfig } from 'payload'\n\nimport type { MultiTenantPluginConfig } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { filterDocumentsByTenants } from '../filters/filterDocumentsByTenants.js'\n\ntype AddFilterOptionsToFieldsArgs<ConfigType = unknown> = {\n blockReferencesWithFilters: string[]\n config: Config | SanitizedConfig\n fields: Field[]\n tenantEnabledCollectionSlugs: string[]\n tenantEnabledGlobalSlugs: string[]\n tenantFieldName: string\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants']\n}\n\nexport function addFilterOptionsToFields<ConfigType = unknown>({\n blockReferencesWithFilters,\n config,\n fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName = defaults.tenantsArrayFieldName,\n tenantsArrayTenantFieldName = defaults.tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n}: AddFilterOptionsToFieldsArgs<ConfigType>): Field[] {\n const newFields = []\n for (const field of fields) {\n let newField: Field = { ...field }\n if (newField.type === 'relationship') {\n /**\n * Adjusts relationship fields to filter by tenant\n * and ensures relationTo cannot be a tenant global collection\n */\n if (typeof newField.relationTo === 'string') {\n if (tenantEnabledGlobalSlugs.includes(newField.relationTo)) {\n throw new Error(\n `The collection ${newField.relationTo} is a global collection and cannot be related to a tenant enabled collection.`,\n )\n }\n if (tenantEnabledCollectionSlugs.includes(newField.relationTo)) {\n newField = addFilter({\n field: newField,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n } else {\n for (const relationTo of newField.relationTo) {\n if (tenantEnabledGlobalSlugs.includes(relationTo)) {\n throw new Error(\n `The collection ${relationTo} is a global collection and cannot be related to a tenant enabled collection.`,\n )\n }\n if (tenantEnabledCollectionSlugs.includes(relationTo)) {\n newField = addFilter({\n field: newField as RelationshipField,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n }\n }\n }\n\n if (\n newField.type === 'row' ||\n newField.type === 'array' ||\n newField.type === 'collapsible' ||\n newField.type === 'group'\n ) {\n newField.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: newField.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n\n if (newField.type === 'blocks') {\n const newBlocks: Block[] = []\n ;(newField.blockReferences ?? newField.blocks).forEach((_block) => {\n let block: Block | undefined\n let isReference = false\n\n if (typeof _block === 'string') {\n if (blockReferencesWithFilters.includes(_block)) {\n return\n }\n isReference = true\n block = config?.blocks?.find((b) => b.slug === _block)\n blockReferencesWithFilters.push(_block)\n } else {\n // Create a shallow copy to avoid mutating the original block reference\n block = { ..._block }\n }\n\n if (block?.fields) {\n block.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: block.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n }\n\n if (block && !isReference) {\n newBlocks.push(block)\n }\n })\n newField.blocks = newBlocks\n }\n\n if (newField.type === 'tabs') {\n newField.tabs = newField.tabs.map((tab) => {\n const newTab = { ...tab }\n newTab.fields = addFilterOptionsToFields({\n blockReferencesWithFilters,\n config,\n fields: tab.fields,\n tenantEnabledCollectionSlugs,\n tenantEnabledGlobalSlugs,\n tenantFieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n return newTab\n })\n }\n\n newFields.push(newField)\n }\n\n return newFields\n}\n\ntype AddFilterArgs<ConfigType = unknown> = {\n field: RelationshipField\n tenantEnabledCollectionSlugs: string[]\n tenantFieldName: string\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants']\n}\nfunction addFilter<ConfigType = unknown>({\n field,\n tenantEnabledCollectionSlugs,\n tenantFieldName,\n tenantsArrayFieldName = defaults.tenantsArrayFieldName,\n tenantsArrayTenantFieldName = defaults.tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n}: AddFilterArgs<ConfigType>): Field {\n // User specified filter\n const originalFilter = field.filterOptions\n field.filterOptions = async (args) => {\n const originalFilterResult =\n typeof originalFilter === 'function' ? await originalFilter(args) : (originalFilter ?? true)\n\n // If the relationTo is not a tenant enabled collection, return early\n if (args.relationTo && !tenantEnabledCollectionSlugs.includes(args.relationTo)) {\n return originalFilterResult\n }\n\n // If the original filtr returns false, return early\n if (originalFilterResult === false) {\n return false\n }\n\n // Custom tenant filter\n const tenantFilterResults = filterDocumentsByTenants({\n docTenantID: args.data?.[tenantFieldName],\n filterFieldName: tenantFieldName,\n req: args.req,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n userHasAccessToAllTenants,\n })\n\n // If the tenant filter returns null, meaning no tenant filter, just use the original filter\n if (tenantFilterResults === null) {\n return originalFilterResult\n }\n\n // If the original filter returns true, just use the tenant filter\n if (originalFilterResult === true) {\n return tenantFilterResults\n }\n\n return {\n and: [originalFilterResult, tenantFilterResults],\n }\n }\n\n return field\n}\n"],"names":["defaults","filterDocumentsByTenants","addFilterOptionsToFields","blockReferencesWithFilters","config","fields","tenantEnabledCollectionSlugs","tenantEnabledGlobalSlugs","tenantFieldName","tenantsArrayFieldName","tenantsArrayTenantFieldName","tenantsCollectionSlug","userHasAccessToAllTenants","newFields","field","newField","type","relationTo","includes","Error","addFilter","newBlocks","blockReferences","blocks","forEach","_block","block","isReference","find","b","slug","push","tabs","map","tab","newTab","originalFilter","filterOptions","args","originalFilterResult","tenantFilterResults","docTenantID","data","filterFieldName","req","and"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-multi-tenant",
3
- "version": "3.61.0-internal.dd40839",
3
+ "version": "3.62.0-canary.0",
4
4
  "description": "Multi Tenant plugin for Payload",
5
5
  "keywords": [
6
6
  "payload",
@@ -81,14 +81,14 @@
81
81
  ],
82
82
  "devDependencies": {
83
83
  "@payloadcms/eslint-config": "3.28.0",
84
- "@payloadcms/ui": "3.61.0-internal.dd40839",
85
- "@payloadcms/translations": "3.61.0-internal.dd40839",
86
- "payload": "3.61.0-internal.dd40839"
84
+ "@payloadcms/translations": "3.62.0-canary.0",
85
+ "@payloadcms/ui": "3.62.0-canary.0",
86
+ "payload": "3.62.0-canary.0"
87
87
  },
88
88
  "peerDependencies": {
89
89
  "next": "^15.2.3",
90
- "@payloadcms/ui": "3.61.0-internal.dd40839",
91
- "payload": "3.61.0-internal.dd40839"
90
+ "@payloadcms/ui": "3.62.0-canary.0",
91
+ "payload": "3.62.0-canary.0"
92
92
  },
93
93
  "homepage:": "https://payloadcms.com",
94
94
  "scripts": {