@payloadcms/plugin-multi-tenant 4.0.0-internal.fa345ef → 4.0.0-internal.fec2230

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 (53) hide show
  1. package/dist/components/AssignTenantFieldModal/index.client.d.ts +2 -2
  2. package/dist/components/AssignTenantFieldModal/index.client.d.ts.map +1 -1
  3. package/dist/components/AssignTenantFieldModal/index.client.js.map +1 -1
  4. package/dist/components/GlobalViewRedirect/index.d.ts.map +1 -1
  5. package/dist/components/TenantField/index.client.d.ts.map +1 -1
  6. package/dist/components/TenantField/index.client.js +84 -74
  7. package/dist/components/TenantField/index.client.js.map +1 -1
  8. package/dist/components/TenantSelector/index.client.d.ts +1 -1
  9. package/dist/components/TenantSelector/index.client.d.ts.map +1 -1
  10. package/dist/components/TenantSelector/index.d.ts.map +1 -1
  11. package/dist/defaults.d.ts.map +1 -1
  12. package/dist/endpoints/getTenantOptionsEndpoint.d.ts +1 -1
  13. package/dist/endpoints/getTenantOptionsEndpoint.d.ts.map +1 -1
  14. package/dist/fields/tenantField/index.d.ts.map +1 -1
  15. package/dist/fields/tenantsArrayField/index.d.ts.map +1 -1
  16. package/dist/filters/filterDocumentsByTenants.d.ts.map +1 -1
  17. package/dist/hooks/afterTenantDelete.d.ts +1 -1
  18. package/dist/hooks/afterTenantDelete.d.ts.map +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +13 -3
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.spec.js +70 -0
  23. package/dist/index.spec.js.map +1 -0
  24. package/dist/providers/TenantSelectionProvider/index.client.d.ts.map +1 -1
  25. package/dist/providers/TenantSelectionProvider/index.d.ts.map +1 -1
  26. package/dist/translations/languages/en.d.ts.map +1 -1
  27. package/dist/types.d.ts +1 -0
  28. package/dist/types.d.ts.map +1 -1
  29. package/dist/types.js.map +1 -1
  30. package/dist/utilities/addCollectionAccess.d.ts +6 -8
  31. package/dist/utilities/addCollectionAccess.d.ts.map +1 -1
  32. package/dist/utilities/addCollectionAccess.js +91 -20
  33. package/dist/utilities/addCollectionAccess.js.map +1 -1
  34. package/dist/utilities/addCollectionAccess.spec.js +134 -0
  35. package/dist/utilities/addCollectionAccess.spec.js.map +1 -0
  36. package/dist/utilities/combineFilters.d.ts.map +1 -1
  37. package/dist/utilities/extractID.d.ts.map +1 -1
  38. package/dist/utilities/generateCookie.d.ts.map +1 -1
  39. package/dist/utilities/getCollectionIDType.d.ts +1 -1
  40. package/dist/utilities/getCollectionIDType.d.ts.map +1 -1
  41. package/dist/utilities/getTenantOptions.d.ts +1 -1
  42. package/dist/utilities/getTenantOptions.d.ts.map +1 -1
  43. package/dist/utilities/getUserTenantIDs.d.ts.map +1 -1
  44. package/dist/utilities/miniChalk.d.ts.map +1 -1
  45. package/package.json +6 -7
  46. package/dist/utilities/combineWhereConstraints.d.ts +0 -3
  47. package/dist/utilities/combineWhereConstraints.d.ts.map +0 -1
  48. package/dist/utilities/combineWhereConstraints.js +0 -19
  49. package/dist/utilities/combineWhereConstraints.js.map +0 -1
  50. package/dist/utilities/withTenantAccess.d.ts +0 -16
  51. package/dist/utilities/withTenantAccess.d.ts.map +0 -1
  52. package/dist/utilities/withTenantAccess.js +0 -76
  53. package/dist/utilities/withTenantAccess.js.map +0 -1
@@ -1,19 +0,0 @@
1
- export function combineWhereConstraints(constraints) {
2
- if (constraints.length === 0) {
3
- return {};
4
- }
5
- if (constraints.length === 1 && constraints[0]) {
6
- return constraints[0];
7
- }
8
- const andConstraint = {
9
- and: []
10
- };
11
- constraints.forEach((constraint)=>{
12
- if (andConstraint.and && constraint && typeof constraint === 'object') {
13
- andConstraint.and.push(constraint);
14
- }
15
- });
16
- return andConstraint;
17
- }
18
-
19
- //# sourceMappingURL=combineWhereConstraints.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/combineWhereConstraints.ts"],"sourcesContent":["import type { Where } from 'payload'\n\nexport function combineWhereConstraints(constraints: Array<Where>): Where {\n if (constraints.length === 0) {\n return {}\n }\n if (constraints.length === 1 && constraints[0]) {\n return constraints[0]\n }\n const andConstraint: Where = {\n and: [],\n }\n constraints.forEach((constraint) => {\n if (andConstraint.and && constraint && typeof constraint === 'object') {\n andConstraint.and.push(constraint)\n }\n })\n return andConstraint\n}\n"],"names":["combineWhereConstraints","constraints","length","andConstraint","and","forEach","constraint","push"],"mappings":"AAEA,OAAO,SAASA,wBAAwBC,WAAyB;IAC/D,IAAIA,YAAYC,MAAM,KAAK,GAAG;QAC5B,OAAO,CAAC;IACV;IACA,IAAID,YAAYC,MAAM,KAAK,KAAKD,WAAW,CAAC,EAAE,EAAE;QAC9C,OAAOA,WAAW,CAAC,EAAE;IACvB;IACA,MAAME,gBAAuB;QAC3BC,KAAK,EAAE;IACT;IACAH,YAAYI,OAAO,CAAC,CAACC;QACnB,IAAIH,cAAcC,GAAG,IAAIE,cAAc,OAAOA,eAAe,UAAU;YACrEH,cAAcC,GAAG,CAACG,IAAI,CAACD;QACzB;IACF;IACA,OAAOH;AACT"}
@@ -1,16 +0,0 @@
1
- import type { Access, AccessArgs, AccessResult, CollectionConfig } from 'payload';
2
- import type { AllAccessKeys, MultiTenantPluginConfig } from '../types.js';
3
- type Args = {
4
- accessFunction?: Access;
5
- accessKey: AllAccessKeys[number];
6
- accessResultCallback?: MultiTenantPluginConfig['usersAccessResultOverride'];
7
- adminUsersSlug: string;
8
- collection: CollectionConfig;
9
- fieldName: string;
10
- tenantsArrayFieldName?: string;
11
- tenantsArrayTenantFieldName?: string;
12
- userHasAccessToAllTenants: Required<MultiTenantPluginConfig>['userHasAccessToAllTenants'];
13
- };
14
- export declare const withTenantAccess: ({ accessFunction, accessKey, accessResultCallback, adminUsersSlug, collection, fieldName, tenantsArrayFieldName, tenantsArrayTenantFieldName, userHasAccessToAllTenants, }: Args) => (args: AccessArgs) => Promise<AccessResult>;
15
- export {};
16
- //# sourceMappingURL=withTenantAccess.d.ts.map
@@ -1 +0,0 @@
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,GAC1B,4KAUE,IAAI,MACA,MAAM,UAAU,KAAG,OAAO,CAAC,YAAY,CAkF7C,CAAA"}
@@ -1,76 +0,0 @@
1
- import { combineWhereConstraints } from './combineWhereConstraints.js';
2
- import { getTenantAccess } from './getTenantAccess.js';
3
- export const withTenantAccess = ({ accessFunction, accessKey, accessResultCallback, adminUsersSlug, collection, fieldName, tenantsArrayFieldName, tenantsArrayTenantFieldName, userHasAccessToAllTenants })=>async (args)=>{
4
- const constraints = [];
5
- const accessFn = typeof accessFunction === 'function' ? accessFunction : ({ req })=>Boolean(req.user);
6
- const accessResult = await accessFn(args);
7
- if (accessResult === false) {
8
- if (accessResultCallback) {
9
- return accessResultCallback({
10
- accessKey,
11
- accessResult: false,
12
- ...args
13
- });
14
- } else {
15
- return false;
16
- }
17
- } else if (accessResult && typeof accessResult === 'object') {
18
- constraints.push(accessResult);
19
- }
20
- if (args.req.user && args.req.user.collection === adminUsersSlug && !userHasAccessToAllTenants(args.req.user)) {
21
- const tenantConstraint = getTenantAccess({
22
- fieldName,
23
- tenantsArrayFieldName,
24
- tenantsArrayTenantFieldName,
25
- user: args.req.user
26
- });
27
- // User with no tenants should have no access to tenant-scoped documents
28
- // except for their own user document
29
- if (tenantConstraint[fieldName]?.in.length === 0) {
30
- const result = collection.slug === args.req.user.collection ? {
31
- id: {
32
- equals: args.req.user.id
33
- }
34
- } : false;
35
- return accessResultCallback ? accessResultCallback({
36
- accessKey,
37
- accessResult: result,
38
- ...args
39
- }) : result;
40
- }
41
- if (collection.slug === args.req.user.collection) {
42
- constraints.push({
43
- or: [
44
- {
45
- id: {
46
- equals: args.req.user.id
47
- }
48
- },
49
- tenantConstraint
50
- ]
51
- });
52
- } else {
53
- constraints.push(tenantConstraint);
54
- }
55
- if (accessResultCallback) {
56
- return accessResultCallback({
57
- accessKey,
58
- accessResult: combineWhereConstraints(constraints),
59
- ...args
60
- });
61
- } else {
62
- return combineWhereConstraints(constraints);
63
- }
64
- }
65
- if (accessResultCallback) {
66
- return accessResultCallback({
67
- accessKey,
68
- accessResult,
69
- ...args
70
- });
71
- } else {
72
- return accessResult;
73
- }
74
- };
75
-
76
- //# sourceMappingURL=withTenantAccess.js.map
@@ -1 +0,0 @@
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"}