@payloadcms/plugin-multi-tenant 4.0.0-internal.4804abd → 4.0.0-internal.4a8e202

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.
Files changed (65) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/components/AssignTenantFieldModal/index.client.d.ts +2 -2
  3. package/dist/components/AssignTenantFieldModal/index.client.d.ts.map +1 -1
  4. package/dist/components/AssignTenantFieldModal/index.client.js.map +1 -1
  5. package/dist/components/GlobalViewRedirect/index.d.ts +1 -1
  6. package/dist/components/GlobalViewRedirect/index.d.ts.map +1 -1
  7. package/dist/components/GlobalViewRedirect/index.js.map +1 -1
  8. package/dist/components/TenantField/index.client.d.ts.map +1 -1
  9. package/dist/components/TenantField/index.client.js +84 -74
  10. package/dist/components/TenantField/index.client.js.map +1 -1
  11. package/dist/components/TenantSelector/index.client.d.ts +1 -1
  12. package/dist/components/TenantSelector/index.client.d.ts.map +1 -1
  13. package/dist/components/TenantSelector/index.d.ts.map +1 -1
  14. package/dist/defaults.d.ts.map +1 -1
  15. package/dist/endpoints/getTenantOptionsEndpoint.d.ts +2 -2
  16. package/dist/endpoints/getTenantOptionsEndpoint.d.ts.map +1 -1
  17. package/dist/endpoints/getTenantOptionsEndpoint.js.map +1 -1
  18. package/dist/fields/tenantField/index.d.ts.map +1 -1
  19. package/dist/fields/tenantsArrayField/index.d.ts.map +1 -1
  20. package/dist/filters/filterDocumentsByTenants.d.ts +3 -3
  21. package/dist/filters/filterDocumentsByTenants.d.ts.map +1 -1
  22. package/dist/filters/filterDocumentsByTenants.js.map +1 -1
  23. package/dist/hooks/afterTenantDelete.d.ts +1 -1
  24. package/dist/hooks/afterTenantDelete.d.ts.map +1 -1
  25. package/dist/hooks/afterTenantDelete.js +4 -1
  26. package/dist/hooks/afterTenantDelete.js.map +1 -1
  27. package/dist/index.d.ts +1 -2
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +6 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/providers/TenantSelectionProvider/index.client.d.ts.map +1 -1
  32. package/dist/providers/TenantSelectionProvider/index.d.ts +5 -5
  33. package/dist/providers/TenantSelectionProvider/index.d.ts.map +1 -1
  34. package/dist/providers/TenantSelectionProvider/index.js.map +1 -1
  35. package/dist/translations/languages/en.d.ts.map +1 -1
  36. package/dist/types.d.ts +5 -6
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/types.js.map +1 -1
  39. package/dist/utilities/addCollectionAccess.d.ts +4 -4
  40. package/dist/utilities/addCollectionAccess.d.ts.map +1 -1
  41. package/dist/utilities/addCollectionAccess.js.map +1 -1
  42. package/dist/utilities/addFilterOptionsToFields.d.ts +3 -3
  43. package/dist/utilities/addFilterOptionsToFields.d.ts.map +1 -1
  44. package/dist/utilities/addFilterOptionsToFields.js.map +1 -1
  45. package/dist/utilities/combineFilters.d.ts.map +1 -1
  46. package/dist/utilities/extractID.d.ts.map +1 -1
  47. package/dist/utilities/generateCookie.d.ts.map +1 -1
  48. package/dist/utilities/getCollectionIDType.d.ts +1 -1
  49. package/dist/utilities/getCollectionIDType.d.ts.map +1 -1
  50. package/dist/utilities/getGlobalViewRedirect.d.ts +3 -3
  51. package/dist/utilities/getGlobalViewRedirect.d.ts.map +1 -1
  52. package/dist/utilities/getGlobalViewRedirect.js.map +1 -1
  53. package/dist/utilities/getTenantOptions.d.ts +3 -3
  54. package/dist/utilities/getTenantOptions.d.ts.map +1 -1
  55. package/dist/utilities/getTenantOptions.js.map +1 -1
  56. package/dist/utilities/getUserTenantIDs.d.ts.map +1 -1
  57. package/dist/utilities/getUserTenantIDs.js +2 -1
  58. package/dist/utilities/getUserTenantIDs.js.map +1 -1
  59. package/dist/utilities/miniChalk.d.ts.map +1 -1
  60. package/dist/utilities/withTenantAccess.d.ts +4 -4
  61. package/dist/utilities/withTenantAccess.d.ts.map +1 -1
  62. package/dist/utilities/withTenantAccess.js.map +1 -1
  63. package/package.json +6 -7
  64. package/dist/@types/assets.d.js +0 -2
  65. package/dist/@types/assets.d.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getTenantOptions.ts"],"sourcesContent":["import type { OptionObject, Payload, TypedUser } from 'payload'\n\nimport type { MultiTenantPluginConfig } from '../types.js'\n\nexport const getTenantOptions = async ({\n payload,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle,\n user,\n userHasAccessToAllTenants,\n}: {\n payload: Payload\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n useAsTitle: string\n user: TypedUser\n userHasAccessToAllTenants: Required<MultiTenantPluginConfig<any>>['userHasAccessToAllTenants']\n}): Promise<OptionObject[]> => {\n let tenantOptions: OptionObject[] = []\n\n if (!user) {\n return tenantOptions\n }\n\n const isOrderable = payload.collections[tenantsCollectionSlug]?.config?.orderable || false\n\n const userTenantIds = !userHasAccessToAllTenants(user)\n ? ((user[tenantsArrayFieldName] as { [key: string]: unknown }[]) || []).map((tenantRow) => {\n const tenantField = tenantRow[tenantsArrayTenantFieldName]\n if (typeof tenantField === 'string' || typeof tenantField === 'number') {\n return tenantField\n }\n if (tenantField && typeof tenantField === 'object' && 'id' in tenantField) {\n return tenantField.id as number | string\n }\n })\n : undefined\n\n if (userTenantIds !== undefined && userTenantIds.length === 0) {\n return tenantOptions\n }\n\n const tenants = await payload.find({\n collection: tenantsCollectionSlug,\n depth: 0,\n limit: 0,\n overrideAccess: false,\n select: {\n [useAsTitle]: true,\n ...(isOrderable && { _order: true }),\n },\n sort: isOrderable ? '_order' : useAsTitle,\n user,\n ...(userTenantIds && {\n where: {\n id: {\n in: userTenantIds,\n },\n },\n }),\n })\n\n tenantOptions = tenants.docs.map((doc) => ({\n label: String(doc[useAsTitle as 'id']),\n value: doc.id as string,\n }))\n\n return tenantOptions\n}\n"],"names":["getTenantOptions","payload","tenantsArrayFieldName","tenantsArrayTenantFieldName","tenantsCollectionSlug","useAsTitle","user","userHasAccessToAllTenants","tenantOptions","isOrderable","collections","config","orderable","userTenantIds","map","tenantRow","tenantField","id","undefined","length","tenants","find","collection","depth","limit","overrideAccess","select","_order","sort","where","in","docs","doc","label","String","value"],"mappings":"AAIA,OAAO,MAAMA,mBAAmB,OAAO,EACrCC,OAAO,EACPC,qBAAqB,EACrBC,2BAA2B,EAC3BC,qBAAqB,EACrBC,UAAU,EACVC,IAAI,EACJC,yBAAyB,EAS1B;IACC,IAAIC,gBAAgC,EAAE;IAEtC,IAAI,CAACF,MAAM;QACT,OAAOE;IACT;IAEA,MAAMC,cAAcR,QAAQS,WAAW,CAACN,sBAAsB,EAAEO,QAAQC,aAAa;IAErF,MAAMC,gBAAgB,CAACN,0BAA0BD,QAC7C,AAAC,CAAA,AAACA,IAAI,CAACJ,sBAAsB,IAAqC,EAAE,AAAD,EAAGY,GAAG,CAAC,CAACC;QACzE,MAAMC,cAAcD,SAAS,CAACZ,4BAA4B;QAC1D,IAAI,OAAOa,gBAAgB,YAAY,OAAOA,gBAAgB,UAAU;YACtE,OAAOA;QACT;QACA,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,QAAQA,aAAa;YACzE,OAAOA,YAAYC,EAAE;QACvB;IACF,KACAC;IAEJ,IAAIL,kBAAkBK,aAAaL,cAAcM,MAAM,KAAK,GAAG;QAC7D,OAAOX;IACT;IAEA,MAAMY,UAAU,MAAMnB,QAAQoB,IAAI,CAAC;QACjCC,YAAYlB;QACZmB,OAAO;QACPC,OAAO;QACPC,gBAAgB;QAChBC,QAAQ;YACN,CAACrB,WAAW,EAAE;YACd,GAAII,eAAe;gBAAEkB,QAAQ;YAAK,CAAC;QACrC;QACAC,MAAMnB,cAAc,WAAWJ;QAC/BC;QACA,GAAIO,iBAAiB;YACnBgB,OAAO;gBACLZ,IAAI;oBACFa,IAAIjB;gBACN;YACF;QACF,CAAC;IACH;IAEAL,gBAAgBY,QAAQW,IAAI,CAACjB,GAAG,CAAC,CAACkB,MAAS,CAAA;YACzCC,OAAOC,OAAOF,GAAG,CAAC3B,WAAmB;YACrC8B,OAAOH,IAAIf,EAAE;QACf,CAAA;IAEA,OAAOT;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getTenantOptions.ts"],"sourcesContent":["import type { OptionObject, Payload, User } from 'payload'\n\nimport type { MultiTenantPluginConfig } from '../types.js'\n\nexport const getTenantOptions = async ({\n payload,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n tenantsCollectionSlug,\n useAsTitle,\n user,\n userHasAccessToAllTenants,\n}: {\n payload: Payload\n tenantsArrayFieldName: string\n tenantsArrayTenantFieldName: string\n tenantsCollectionSlug: string\n useAsTitle: string\n user: User\n userHasAccessToAllTenants: Required<MultiTenantPluginConfig>['userHasAccessToAllTenants']\n}): Promise<OptionObject[]> => {\n let tenantOptions: OptionObject[] = []\n\n if (!user) {\n return tenantOptions\n }\n\n const isOrderable = payload.collections[tenantsCollectionSlug]?.config?.orderable || false\n\n const userTenantIds = !userHasAccessToAllTenants(user)\n ? (\n ((user as Record<string, unknown>)[tenantsArrayFieldName] as {\n [key: string]: unknown\n }[]) || []\n ).map((tenantRow) => {\n const tenantField = tenantRow[tenantsArrayTenantFieldName]\n if (typeof tenantField === 'string' || typeof tenantField === 'number') {\n return tenantField\n }\n if (tenantField && typeof tenantField === 'object' && 'id' in tenantField) {\n return tenantField.id as number | string\n }\n })\n : undefined\n\n if (userTenantIds !== undefined && userTenantIds.length === 0) {\n return tenantOptions\n }\n\n const tenants = await payload.find({\n collection: tenantsCollectionSlug,\n depth: 0,\n limit: 0,\n overrideAccess: false,\n select: {\n [useAsTitle]: true,\n ...(isOrderable && { _order: true }),\n },\n sort: isOrderable ? '_order' : useAsTitle,\n user,\n ...(userTenantIds && {\n where: {\n id: {\n in: userTenantIds,\n },\n },\n }),\n })\n\n tenantOptions = tenants.docs.map((doc) => ({\n label: String(doc[useAsTitle as 'id']),\n value: doc.id as string,\n }))\n\n return tenantOptions\n}\n"],"names":["getTenantOptions","payload","tenantsArrayFieldName","tenantsArrayTenantFieldName","tenantsCollectionSlug","useAsTitle","user","userHasAccessToAllTenants","tenantOptions","isOrderable","collections","config","orderable","userTenantIds","map","tenantRow","tenantField","id","undefined","length","tenants","find","collection","depth","limit","overrideAccess","select","_order","sort","where","in","docs","doc","label","String","value"],"mappings":"AAIA,OAAO,MAAMA,mBAAmB,OAAO,EACrCC,OAAO,EACPC,qBAAqB,EACrBC,2BAA2B,EAC3BC,qBAAqB,EACrBC,UAAU,EACVC,IAAI,EACJC,yBAAyB,EAS1B;IACC,IAAIC,gBAAgC,EAAE;IAEtC,IAAI,CAACF,MAAM;QACT,OAAOE;IACT;IAEA,MAAMC,cAAcR,QAAQS,WAAW,CAACN,sBAAsB,EAAEO,QAAQC,aAAa;IAErF,MAAMC,gBAAgB,CAACN,0BAA0BD,QAC7C,AACE,CAAA,AAAC,AAACA,IAAgC,CAACJ,sBAAsB,IAEjD,EAAE,AAAD,EACTY,GAAG,CAAC,CAACC;QACL,MAAMC,cAAcD,SAAS,CAACZ,4BAA4B;QAC1D,IAAI,OAAOa,gBAAgB,YAAY,OAAOA,gBAAgB,UAAU;YACtE,OAAOA;QACT;QACA,IAAIA,eAAe,OAAOA,gBAAgB,YAAY,QAAQA,aAAa;YACzE,OAAOA,YAAYC,EAAE;QACvB;IACF,KACAC;IAEJ,IAAIL,kBAAkBK,aAAaL,cAAcM,MAAM,KAAK,GAAG;QAC7D,OAAOX;IACT;IAEA,MAAMY,UAAU,MAAMnB,QAAQoB,IAAI,CAAC;QACjCC,YAAYlB;QACZmB,OAAO;QACPC,OAAO;QACPC,gBAAgB;QAChBC,QAAQ;YACN,CAACrB,WAAW,EAAE;YACd,GAAII,eAAe;gBAAEkB,QAAQ;YAAK,CAAC;QACrC;QACAC,MAAMnB,cAAc,WAAWJ;QAC/BC;QACA,GAAIO,iBAAiB;YACnBgB,OAAO;gBACLZ,IAAI;oBACFa,IAAIjB;gBACN;YACF;QACF,CAAC;IACH;IAEAL,gBAAgBY,QAAQW,IAAI,CAACjB,GAAG,CAAC,CAACkB,MAAS,CAAA;YACzCC,OAAOC,OAAOF,GAAG,CAAC3B,WAAmB;YACrC8B,OAAOH,IAAIf,EAAE;QACf,CAAA;IAEA,OAAOT;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getUserTenantIDs.d.ts","sourceRoot":"","sources":["../../src/utilities/getUserTenantIDs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAK/D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,SAAS,MAAM,GAAG,MAAM,EAC7D,MAAM,IAAI,GAAG,oBAAoB,EACjC,UAAU;IACR,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAA;CACrC,KACA,MAAM,EAoBR,CAAA"}
1
+ {"version":3,"file":"getUserTenantIDs.d.ts","sourceRoot":"","sources":["../../src/utilities/getUserTenantIDs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAK/D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,SAAS,MAAM,GAAG,MAAM,QACvD,IAAI,GAAG,oBAAoB,YACvB;IACR,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAA;CACrC,KACA,MAAM,EAoBR,CAAA"}
@@ -10,7 +10,8 @@ import { extractID } from './extractID.js';
10
10
  }
11
11
  const tenantsArrayFieldName = options?.tenantsArrayFieldName || defaults.tenantsArrayFieldName;
12
12
  const tenantsArrayTenantFieldName = options?.tenantsArrayTenantFieldName || defaults.tenantsArrayTenantFieldName;
13
- return (Array.isArray(user[tenantsArrayFieldName]) ? user[tenantsArrayFieldName] : [])?.reduce((acc, row)=>{
13
+ const tenantsArray = user[tenantsArrayFieldName];
14
+ return (Array.isArray(tenantsArray) ? tenantsArray : [])?.reduce((acc, row)=>{
14
15
  if (row[tenantsArrayTenantFieldName]) {
15
16
  acc.push(extractID(row[tenantsArrayTenantFieldName]));
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getUserTenantIDs.ts"],"sourcesContent":["import type { Tenant, UserWithTenantsField } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { extractID } from './extractID.js'\n\n/**\n * Returns array of all tenant IDs assigned to a user\n *\n * @param user - User object with tenants field\n */\nexport const getUserTenantIDs = <IDType extends number | string>(\n user: null | UserWithTenantsField,\n options?: {\n tenantsArrayFieldName?: string\n tenantsArrayTenantFieldName?: string\n },\n): IDType[] => {\n if (!user) {\n return []\n }\n\n const tenantsArrayFieldName = options?.tenantsArrayFieldName || defaults.tenantsArrayFieldName\n const tenantsArrayTenantFieldName =\n options?.tenantsArrayTenantFieldName || defaults.tenantsArrayTenantFieldName\n\n return (\n (Array.isArray(user[tenantsArrayFieldName]) ? user[tenantsArrayFieldName] : [])?.reduce<\n IDType[]\n >((acc, row) => {\n if (row[tenantsArrayTenantFieldName]) {\n acc.push(extractID<IDType>(row[tenantsArrayTenantFieldName] as Tenant<IDType>))\n }\n\n return acc\n }, []) || []\n )\n}\n"],"names":["defaults","extractID","getUserTenantIDs","user","options","tenantsArrayFieldName","tenantsArrayTenantFieldName","Array","isArray","reduce","acc","row","push"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,SAAS,QAAQ,iBAAgB;AAE1C;;;;CAIC,GACD,OAAO,MAAMC,mBAAmB,CAC9BC,MACAC;IAKA,IAAI,CAACD,MAAM;QACT,OAAO,EAAE;IACX;IAEA,MAAME,wBAAwBD,SAASC,yBAAyBL,SAASK,qBAAqB;IAC9F,MAAMC,8BACJF,SAASE,+BAA+BN,SAASM,2BAA2B;IAE9E,OACE,AAACC,CAAAA,MAAMC,OAAO,CAACL,IAAI,CAACE,sBAAsB,IAAIF,IAAI,CAACE,sBAAsB,GAAG,EAAE,AAAD,GAAII,OAE/E,CAACC,KAAKC;QACN,IAAIA,GAAG,CAACL,4BAA4B,EAAE;YACpCI,IAAIE,IAAI,CAACX,UAAkBU,GAAG,CAACL,4BAA4B;QAC7D;QAEA,OAAOI;IACT,GAAG,EAAE,KAAK,EAAE;AAEhB,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getUserTenantIDs.ts"],"sourcesContent":["import type { Tenant, UserWithTenantsField } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { extractID } from './extractID.js'\n\n/**\n * Returns array of all tenant IDs assigned to a user\n *\n * @param user - User object with tenants field\n */\nexport const getUserTenantIDs = <IDType extends number | string>(\n user: null | UserWithTenantsField,\n options?: {\n tenantsArrayFieldName?: string\n tenantsArrayTenantFieldName?: string\n },\n): IDType[] => {\n if (!user) {\n return []\n }\n\n const tenantsArrayFieldName = options?.tenantsArrayFieldName || defaults.tenantsArrayFieldName\n const tenantsArrayTenantFieldName =\n options?.tenantsArrayTenantFieldName || defaults.tenantsArrayTenantFieldName\n\n const tenantsArray = (user as Record<string, unknown>)[tenantsArrayFieldName]\n\n return (\n (Array.isArray(tenantsArray) ? tenantsArray : [])?.reduce<IDType[]>((acc, row) => {\n if (row[tenantsArrayTenantFieldName]) {\n acc.push(extractID<IDType>(row[tenantsArrayTenantFieldName] as Tenant<IDType>))\n }\n\n return acc\n }, []) || []\n )\n}\n"],"names":["defaults","extractID","getUserTenantIDs","user","options","tenantsArrayFieldName","tenantsArrayTenantFieldName","tenantsArray","Array","isArray","reduce","acc","row","push"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,SAAS,QAAQ,iBAAgB;AAE1C;;;;CAIC,GACD,OAAO,MAAMC,mBAAmB,CAC9BC,MACAC;IAKA,IAAI,CAACD,MAAM;QACT,OAAO,EAAE;IACX;IAEA,MAAME,wBAAwBD,SAASC,yBAAyBL,SAASK,qBAAqB;IAC9F,MAAMC,8BACJF,SAASE,+BAA+BN,SAASM,2BAA2B;IAE9E,MAAMC,eAAe,AAACJ,IAAgC,CAACE,sBAAsB;IAE7E,OACE,AAACG,CAAAA,MAAMC,OAAO,CAACF,gBAAgBA,eAAe,EAAE,AAAD,GAAIG,OAAiB,CAACC,KAAKC;QACxE,IAAIA,GAAG,CAACN,4BAA4B,EAAE;YACpCK,IAAIE,IAAI,CAACZ,UAAkBW,GAAG,CAACN,4BAA4B;QAC7D;QAEA,OAAOK;IACT,GAAG,EAAE,KAAK,EAAE;AAEhB,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"miniChalk.d.ts","sourceRoot":"","sources":["../../src/utilities/miniChalk.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,SAAS;gBACR,MAAM;gBACN,MAAM;gBACN,MAAM;eACP,MAAM;iBACJ,MAAM;mBACJ,MAAM;eACV,MAAM;qBACA,MAAM;iBACV,MAAM;kBACL,MAAM;mBAGL,MAAM;sBACH,MAAM;CACzB,CAAA"}
1
+ {"version":3,"file":"miniChalk.d.ts","sourceRoot":"","sources":["../../src/utilities/miniChalk.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,SAAS;IACpB,IAAI,QAAQ,MAAM;IAClB,IAAI,QAAQ,MAAM;IAClB,IAAI,QAAQ,MAAM;IAClB,GAAG,QAAQ,MAAM;IACjB,KAAK,QAAQ,MAAM;IACnB,OAAO,QAAQ,MAAM;IACrB,GAAG,QAAQ,MAAM;IACjB,SAAS,QAAQ,MAAM;IACvB,KAAK,QAAQ,MAAM;IACnB,MAAM,QAAQ,MAAM;IAGpB,OAAO,QAAQ,MAAM;IACrB,UAAU,QAAQ,MAAM;CACzB,CAAA"}
@@ -1,16 +1,16 @@
1
1
  import type { Access, AccessArgs, AccessResult, CollectionConfig } from 'payload';
2
2
  import type { AllAccessKeys, MultiTenantPluginConfig } from '../types.js';
3
- type Args<ConfigType> = {
3
+ type Args = {
4
4
  accessFunction?: Access;
5
5
  accessKey: AllAccessKeys[number];
6
- accessResultCallback?: MultiTenantPluginConfig<ConfigType>['usersAccessResultOverride'];
6
+ accessResultCallback?: MultiTenantPluginConfig['usersAccessResultOverride'];
7
7
  adminUsersSlug: string;
8
8
  collection: CollectionConfig;
9
9
  fieldName: string;
10
10
  tenantsArrayFieldName?: string;
11
11
  tenantsArrayTenantFieldName?: string;
12
- userHasAccessToAllTenants: Required<MultiTenantPluginConfig<ConfigType>>['userHasAccessToAllTenants'];
12
+ userHasAccessToAllTenants: Required<MultiTenantPluginConfig>['userHasAccessToAllTenants'];
13
13
  };
14
- export declare const withTenantAccess: <ConfigType>({ accessFunction, accessKey, accessResultCallback, adminUsersSlug, collection, fieldName, tenantsArrayFieldName, tenantsArrayTenantFieldName, userHasAccessToAllTenants, }: Args<ConfigType>) => (args: AccessArgs) => Promise<AccessResult>;
14
+ export declare const withTenantAccess: ({ accessFunction, accessKey, accessResultCallback, adminUsersSlug, collection, fieldName, tenantsArrayFieldName, tenantsArrayTenantFieldName, userHasAccessToAllTenants, }: Args) => (args: AccessArgs) => Promise<AccessResult>;
15
15
  export {};
16
16
  //# sourceMappingURL=withTenantAccess.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"withTenantAccess.d.ts","sourceRoot":"","sources":["../../src/utilities/withTenantAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAA;AAEnG,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAwB,MAAM,aAAa,CAAA;AAK/F,KAAK,IAAI,CAAC,UAAU,IAAI;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAChC,oBAAoB,CAAC,EAAE,uBAAuB,CAAC,UAAU,CAAC,CAAC,2BAA2B,CAAC,CAAA;IACvF,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,yBAAyB,EAAE,QAAQ,CACjC,uBAAuB,CAAC,UAAU,CAAC,CACpC,CAAC,2BAA2B,CAAC,CAAA;CAC/B,CAAA;AACD,eAAO,MAAM,gBAAgB,GAC1B,UAAU,EAAE,4KAUV,IAAI,CAAC,UAAU,CAAC,MACZ,MAAM,UAAU,KAAG,OAAO,CAAC,YAAY,CAoF7C,CAAA"}
1
+ {"version":3,"file":"withTenantAccess.d.ts","sourceRoot":"","sources":["../../src/utilities/withTenantAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAe,MAAM,SAAS,CAAA;AAE9F,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAwB,MAAM,aAAa,CAAA;AAK/F,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAChC,oBAAoB,CAAC,EAAE,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;IAC3E,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAA;IACpC,yBAAyB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC,2BAA2B,CAAC,CAAA;CAC1F,CAAA;AACD,eAAO,MAAM,gBAAgB,+KAWxB,IAAI,YACM,UAAU,KAAG,OAAO,CAAC,YAAY,CAkF7C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/withTenantAccess.ts"],"sourcesContent":["import type { Access, AccessArgs, AccessResult, CollectionConfig, TypedUser, Where } from 'payload'\n\nimport type { AllAccessKeys, MultiTenantPluginConfig, UserWithTenantsField } from '../types.js'\n\nimport { combineWhereConstraints } from './combineWhereConstraints.js'\nimport { getTenantAccess } from './getTenantAccess.js'\n\ntype Args<ConfigType> = {\n accessFunction?: Access\n accessKey: AllAccessKeys[number]\n accessResultCallback?: MultiTenantPluginConfig<ConfigType>['usersAccessResultOverride']\n adminUsersSlug: string\n collection: CollectionConfig\n fieldName: string\n tenantsArrayFieldName?: string\n tenantsArrayTenantFieldName?: string\n userHasAccessToAllTenants: Required<\n MultiTenantPluginConfig<ConfigType>\n >['userHasAccessToAllTenants']\n}\nexport const withTenantAccess =\n <ConfigType>({\n accessFunction,\n accessKey,\n accessResultCallback,\n adminUsersSlug,\n collection,\n fieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n }: Args<ConfigType>) =>\n async (args: AccessArgs): Promise<AccessResult> => {\n const constraints: Where[] = []\n const accessFn =\n typeof accessFunction === 'function'\n ? accessFunction\n : ({ req }: AccessArgs): AccessResult => Boolean(req.user)\n const accessResult: AccessResult = await accessFn(args)\n\n if (accessResult === false) {\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult: false,\n ...args,\n })\n } else {\n return false\n }\n } else if (accessResult && typeof accessResult === 'object') {\n constraints.push(accessResult)\n }\n\n if (\n args.req.user &&\n args.req.user.collection === adminUsersSlug &&\n !userHasAccessToAllTenants(\n args.req.user as ConfigType extends { user: unknown } ? ConfigType['user'] : TypedUser,\n )\n ) {\n const tenantConstraint = getTenantAccess({\n fieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n user: args.req.user as UserWithTenantsField,\n })\n\n // User with no tenants should have no access to tenant-scoped documents\n // except for their own user document\n if (tenantConstraint[fieldName]?.in.length === 0) {\n const result: AccessResult =\n collection.slug === args.req.user.collection\n ? { id: { equals: args.req.user.id } }\n : false\n\n return accessResultCallback\n ? accessResultCallback({ accessKey, accessResult: result, ...args })\n : result\n }\n\n if (collection.slug === args.req.user.collection) {\n constraints.push({\n or: [\n {\n id: {\n equals: args.req.user.id,\n },\n },\n tenantConstraint,\n ],\n })\n } else {\n constraints.push(tenantConstraint)\n }\n\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult: combineWhereConstraints(constraints),\n ...args,\n })\n } else {\n return combineWhereConstraints(constraints)\n }\n }\n\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult,\n ...args,\n })\n } else {\n return accessResult\n }\n }\n"],"names":["combineWhereConstraints","getTenantAccess","withTenantAccess","accessFunction","accessKey","accessResultCallback","adminUsersSlug","collection","fieldName","tenantsArrayFieldName","tenantsArrayTenantFieldName","userHasAccessToAllTenants","args","constraints","accessFn","req","Boolean","user","accessResult","push","tenantConstraint","in","length","result","slug","id","equals","or"],"mappings":"AAIA,SAASA,uBAAuB,QAAQ,+BAA8B;AACtE,SAASC,eAAe,QAAQ,uBAAsB;AAetD,OAAO,MAAMC,mBACX,CAAa,EACXC,cAAc,EACdC,SAAS,EACTC,oBAAoB,EACpBC,cAAc,EACdC,UAAU,EACVC,SAAS,EACTC,qBAAqB,EACrBC,2BAA2B,EAC3BC,yBAAyB,EACR,GACnB,OAAOC;QACL,MAAMC,cAAuB,EAAE;QAC/B,MAAMC,WACJ,OAAOX,mBAAmB,aACtBA,iBACA,CAAC,EAAEY,GAAG,EAAc,GAAmBC,QAAQD,IAAIE,IAAI;QAC7D,MAAMC,eAA6B,MAAMJ,SAASF;QAElD,IAAIM,iBAAiB,OAAO;YAC1B,IAAIb,sBAAsB;gBACxB,OAAOA,qBAAqB;oBAC1BD;oBACAc,cAAc;oBACd,GAAGN,IAAI;gBACT;YACF,OAAO;gBACL,OAAO;YACT;QACF,OAAO,IAAIM,gBAAgB,OAAOA,iBAAiB,UAAU;YAC3DL,YAAYM,IAAI,CAACD;QACnB;QAEA,IACEN,KAAKG,GAAG,CAACE,IAAI,IACbL,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,KAAKD,kBAC7B,CAACK,0BACCC,KAAKG,GAAG,CAACE,IAAI,GAEf;YACA,MAAMG,mBAAmBnB,gBAAgB;gBACvCO;gBACAC;gBACAC;gBACAO,MAAML,KAAKG,GAAG,CAACE,IAAI;YACrB;YAEA,wEAAwE;YACxE,qCAAqC;YACrC,IAAIG,gBAAgB,CAACZ,UAAU,EAAEa,GAAGC,WAAW,GAAG;gBAChD,MAAMC,SACJhB,WAAWiB,IAAI,KAAKZ,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,GACxC;oBAAEkB,IAAI;wBAAEC,QAAQd,KAAKG,GAAG,CAACE,IAAI,CAACQ,EAAE;oBAAC;gBAAE,IACnC;gBAEN,OAAOpB,uBACHA,qBAAqB;oBAAED;oBAAWc,cAAcK;oBAAQ,GAAGX,IAAI;gBAAC,KAChEW;YACN;YAEA,IAAIhB,WAAWiB,IAAI,KAAKZ,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,EAAE;gBAChDM,YAAYM,IAAI,CAAC;oBACfQ,IAAI;wBACF;4BACEF,IAAI;gCACFC,QAAQd,KAAKG,GAAG,CAACE,IAAI,CAACQ,EAAE;4BAC1B;wBACF;wBACAL;qBACD;gBACH;YACF,OAAO;gBACLP,YAAYM,IAAI,CAACC;YACnB;YAEA,IAAIf,sBAAsB;gBACxB,OAAOA,qBAAqB;oBAC1BD;oBACAc,cAAclB,wBAAwBa;oBACtC,GAAGD,IAAI;gBACT;YACF,OAAO;gBACL,OAAOZ,wBAAwBa;YACjC;QACF;QAEA,IAAIR,sBAAsB;YACxB,OAAOA,qBAAqB;gBAC1BD;gBACAc;gBACA,GAAGN,IAAI;YACT;QACF,OAAO;YACL,OAAOM;QACT;IACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/withTenantAccess.ts"],"sourcesContent":["import type { Access, AccessArgs, AccessResult, CollectionConfig, User, Where } from 'payload'\n\nimport type { AllAccessKeys, MultiTenantPluginConfig, UserWithTenantsField } from '../types.js'\n\nimport { combineWhereConstraints } from './combineWhereConstraints.js'\nimport { getTenantAccess } from './getTenantAccess.js'\n\ntype Args = {\n accessFunction?: Access\n accessKey: AllAccessKeys[number]\n accessResultCallback?: MultiTenantPluginConfig['usersAccessResultOverride']\n adminUsersSlug: string\n collection: CollectionConfig\n fieldName: string\n tenantsArrayFieldName?: string\n tenantsArrayTenantFieldName?: string\n userHasAccessToAllTenants: Required<MultiTenantPluginConfig>['userHasAccessToAllTenants']\n}\nexport const withTenantAccess =\n ({\n accessFunction,\n accessKey,\n accessResultCallback,\n adminUsersSlug,\n collection,\n fieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n userHasAccessToAllTenants,\n }: Args) =>\n async (args: AccessArgs): Promise<AccessResult> => {\n const constraints: Where[] = []\n const accessFn =\n typeof accessFunction === 'function'\n ? accessFunction\n : ({ req }: AccessArgs): AccessResult => Boolean(req.user)\n const accessResult: AccessResult = await accessFn(args)\n\n if (accessResult === false) {\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult: false,\n ...args,\n })\n } else {\n return false\n }\n } else if (accessResult && typeof accessResult === 'object') {\n constraints.push(accessResult)\n }\n\n if (\n args.req.user &&\n args.req.user.collection === adminUsersSlug &&\n !userHasAccessToAllTenants(args.req.user as User)\n ) {\n const tenantConstraint = getTenantAccess({\n fieldName,\n tenantsArrayFieldName,\n tenantsArrayTenantFieldName,\n user: args.req.user as UserWithTenantsField,\n })\n\n // User with no tenants should have no access to tenant-scoped documents\n // except for their own user document\n if (tenantConstraint[fieldName]?.in.length === 0) {\n const result: AccessResult =\n collection.slug === args.req.user.collection\n ? { id: { equals: args.req.user.id } }\n : false\n\n return accessResultCallback\n ? accessResultCallback({ accessKey, accessResult: result, ...args })\n : result\n }\n\n if (collection.slug === args.req.user.collection) {\n constraints.push({\n or: [\n {\n id: {\n equals: args.req.user.id,\n },\n },\n tenantConstraint,\n ],\n })\n } else {\n constraints.push(tenantConstraint)\n }\n\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult: combineWhereConstraints(constraints),\n ...args,\n })\n } else {\n return combineWhereConstraints(constraints)\n }\n }\n\n if (accessResultCallback) {\n return accessResultCallback({\n accessKey,\n accessResult,\n ...args,\n })\n } else {\n return accessResult\n }\n }\n"],"names":["combineWhereConstraints","getTenantAccess","withTenantAccess","accessFunction","accessKey","accessResultCallback","adminUsersSlug","collection","fieldName","tenantsArrayFieldName","tenantsArrayTenantFieldName","userHasAccessToAllTenants","args","constraints","accessFn","req","Boolean","user","accessResult","push","tenantConstraint","in","length","result","slug","id","equals","or"],"mappings":"AAIA,SAASA,uBAAuB,QAAQ,+BAA8B;AACtE,SAASC,eAAe,QAAQ,uBAAsB;AAatD,OAAO,MAAMC,mBACX,CAAC,EACCC,cAAc,EACdC,SAAS,EACTC,oBAAoB,EACpBC,cAAc,EACdC,UAAU,EACVC,SAAS,EACTC,qBAAqB,EACrBC,2BAA2B,EAC3BC,yBAAyB,EACpB,GACP,OAAOC;QACL,MAAMC,cAAuB,EAAE;QAC/B,MAAMC,WACJ,OAAOX,mBAAmB,aACtBA,iBACA,CAAC,EAAEY,GAAG,EAAc,GAAmBC,QAAQD,IAAIE,IAAI;QAC7D,MAAMC,eAA6B,MAAMJ,SAASF;QAElD,IAAIM,iBAAiB,OAAO;YAC1B,IAAIb,sBAAsB;gBACxB,OAAOA,qBAAqB;oBAC1BD;oBACAc,cAAc;oBACd,GAAGN,IAAI;gBACT;YACF,OAAO;gBACL,OAAO;YACT;QACF,OAAO,IAAIM,gBAAgB,OAAOA,iBAAiB,UAAU;YAC3DL,YAAYM,IAAI,CAACD;QACnB;QAEA,IACEN,KAAKG,GAAG,CAACE,IAAI,IACbL,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,KAAKD,kBAC7B,CAACK,0BAA0BC,KAAKG,GAAG,CAACE,IAAI,GACxC;YACA,MAAMG,mBAAmBnB,gBAAgB;gBACvCO;gBACAC;gBACAC;gBACAO,MAAML,KAAKG,GAAG,CAACE,IAAI;YACrB;YAEA,wEAAwE;YACxE,qCAAqC;YACrC,IAAIG,gBAAgB,CAACZ,UAAU,EAAEa,GAAGC,WAAW,GAAG;gBAChD,MAAMC,SACJhB,WAAWiB,IAAI,KAAKZ,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,GACxC;oBAAEkB,IAAI;wBAAEC,QAAQd,KAAKG,GAAG,CAACE,IAAI,CAACQ,EAAE;oBAAC;gBAAE,IACnC;gBAEN,OAAOpB,uBACHA,qBAAqB;oBAAED;oBAAWc,cAAcK;oBAAQ,GAAGX,IAAI;gBAAC,KAChEW;YACN;YAEA,IAAIhB,WAAWiB,IAAI,KAAKZ,KAAKG,GAAG,CAACE,IAAI,CAACV,UAAU,EAAE;gBAChDM,YAAYM,IAAI,CAAC;oBACfQ,IAAI;wBACF;4BACEF,IAAI;gCACFC,QAAQd,KAAKG,GAAG,CAACE,IAAI,CAACQ,EAAE;4BAC1B;wBACF;wBACAL;qBACD;gBACH;YACF,OAAO;gBACLP,YAAYM,IAAI,CAACC;YACnB;YAEA,IAAIf,sBAAsB;gBACxB,OAAOA,qBAAqB;oBAC1BD;oBACAc,cAAclB,wBAAwBa;oBACtC,GAAGD,IAAI;gBACT;YACF,OAAO;gBACL,OAAOZ,wBAAwBa;YACjC;QACF;QAEA,IAAIR,sBAAsB;YACxB,OAAOA,qBAAqB;gBAC1BD;gBACAc;gBACA,GAAGN,IAAI;YACT;QACF,OAAO;YACL,OAAOM;QACT;IACF,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-multi-tenant",
3
- "version": "4.0.0-internal.4804abd",
3
+ "version": "4.0.0-internal.4a8e202",
4
4
  "description": "Multi Tenant plugin for Payload",
5
5
  "keywords": [
6
6
  "payload",
@@ -26,7 +26,6 @@
26
26
  }
27
27
  ],
28
28
  "sideEffects": [
29
- "*.scss",
30
29
  "*.css"
31
30
  ],
32
31
  "type": "module",
@@ -81,13 +80,13 @@
81
80
  ],
82
81
  "devDependencies": {
83
82
  "@payloadcms/eslint-config": "3.28.0",
84
- "@payloadcms/translations": "4.0.0-internal.4804abd",
85
- "payload": "4.0.0-internal.4804abd",
86
- "@payloadcms/ui": "4.0.0-internal.4804abd"
83
+ "@payloadcms/translations": "4.0.0-internal.4a8e202",
84
+ "payload": "4.0.0-internal.4a8e202",
85
+ "@payloadcms/ui": "4.0.0-internal.4a8e202"
87
86
  },
88
87
  "peerDependencies": {
89
- "@payloadcms/ui": "4.0.0-internal.4804abd",
90
- "payload": "4.0.0-internal.4804abd"
88
+ "@payloadcms/ui": "4.0.0-internal.4a8e202",
89
+ "payload": "4.0.0-internal.4a8e202"
91
90
  },
92
91
  "homepage:": "https://payloadcms.com",
93
92
  "scripts": {
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=assets.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/@types/assets.d.ts"],"names":[],"mappings":""}