@payloadcms/plugin-multi-tenant 4.0.0-internal.d28e9fb → 4.0.0-internal.d7d662c

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 (98) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/components/AssignTenantFieldModal/index.client.d.ts +2 -3
  3. package/dist/components/AssignTenantFieldModal/index.client.d.ts.map +1 -1
  4. package/dist/components/AssignTenantFieldModal/index.client.js +26 -81
  5. package/dist/components/AssignTenantFieldModal/index.client.js.map +1 -1
  6. package/dist/components/GlobalViewRedirect/index.d.ts +1 -1
  7. package/dist/components/GlobalViewRedirect/index.d.ts.map +1 -1
  8. package/dist/components/GlobalViewRedirect/index.js +6 -4
  9. package/dist/components/GlobalViewRedirect/index.js.map +1 -1
  10. package/dist/components/TenantField/index.client.d.ts +1 -1
  11. package/dist/components/TenantField/index.client.d.ts.map +1 -1
  12. package/dist/components/TenantField/index.client.js +85 -75
  13. package/dist/components/TenantField/index.client.js.map +1 -1
  14. package/dist/components/TenantField/index.css +44 -0
  15. package/dist/components/TenantSelector/index.client.d.ts +2 -2
  16. package/dist/components/TenantSelector/index.client.d.ts.map +1 -1
  17. package/dist/components/TenantSelector/index.client.js +4 -2
  18. package/dist/components/TenantSelector/index.client.js.map +1 -1
  19. package/dist/components/TenantSelector/index.css +13 -0
  20. package/dist/defaults.d.ts.map +1 -1
  21. package/dist/endpoints/getTenantOptionsEndpoint.d.ts +2 -2
  22. package/dist/endpoints/getTenantOptionsEndpoint.d.ts.map +1 -1
  23. package/dist/endpoints/getTenantOptionsEndpoint.js.map +1 -1
  24. package/dist/fields/tenantField/index.d.ts +4 -2
  25. package/dist/fields/tenantField/index.d.ts.map +1 -1
  26. package/dist/fields/tenantField/index.js +36 -9
  27. package/dist/fields/tenantField/index.js.map +1 -1
  28. package/dist/filters/filterDocumentsByTenants.d.ts +3 -3
  29. package/dist/filters/filterDocumentsByTenants.d.ts.map +1 -1
  30. package/dist/filters/filterDocumentsByTenants.js.map +1 -1
  31. package/dist/hooks/afterTenantDelete.d.ts +1 -1
  32. package/dist/hooks/afterTenantDelete.d.ts.map +1 -1
  33. package/dist/hooks/afterTenantDelete.js +7 -1
  34. package/dist/hooks/afterTenantDelete.js.map +1 -1
  35. package/dist/hooks/enforceTenantMembership.d.ts +15 -0
  36. package/dist/hooks/enforceTenantMembership.d.ts.map +1 -0
  37. package/dist/hooks/enforceTenantMembership.js +39 -0
  38. package/dist/hooks/enforceTenantMembership.js.map +1 -0
  39. package/dist/index.d.ts +1 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +32 -6
  42. package/dist/index.js.map +1 -1
  43. package/dist/providers/TenantSelectionProvider/index.client.d.ts.map +1 -1
  44. package/dist/providers/TenantSelectionProvider/index.client.js +44 -17
  45. package/dist/providers/TenantSelectionProvider/index.client.js.map +1 -1
  46. package/dist/providers/TenantSelectionProvider/index.d.ts +6 -5
  47. package/dist/providers/TenantSelectionProvider/index.d.ts.map +1 -1
  48. package/dist/providers/TenantSelectionProvider/index.js +5 -3
  49. package/dist/providers/TenantSelectionProvider/index.js.map +1 -1
  50. package/dist/translations/languages/en.d.ts.map +1 -1
  51. package/dist/types.d.ts +9 -9
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js.map +1 -1
  54. package/dist/utilities/addCollectionAccess.d.ts +8 -10
  55. package/dist/utilities/addCollectionAccess.d.ts.map +1 -1
  56. package/dist/utilities/addCollectionAccess.js +99 -21
  57. package/dist/utilities/addCollectionAccess.js.map +1 -1
  58. package/dist/utilities/addFilterOptionsToFields.d.ts +3 -3
  59. package/dist/utilities/addFilterOptionsToFields.d.ts.map +1 -1
  60. package/dist/utilities/addFilterOptionsToFields.js +6 -9
  61. package/dist/utilities/addFilterOptionsToFields.js.map +1 -1
  62. package/dist/utilities/generateCookie.d.ts.map +1 -1
  63. package/dist/utilities/getCollectionIDType.d.ts +1 -1
  64. package/dist/utilities/getGlobalViewRedirect.d.ts +5 -4
  65. package/dist/utilities/getGlobalViewRedirect.d.ts.map +1 -1
  66. package/dist/utilities/getGlobalViewRedirect.js +4 -3
  67. package/dist/utilities/getGlobalViewRedirect.js.map +1 -1
  68. package/dist/utilities/getTenantIDsFromValue.d.ts +2 -0
  69. package/dist/utilities/getTenantIDsFromValue.d.ts.map +1 -0
  70. package/dist/utilities/getTenantIDsFromValue.js +14 -0
  71. package/dist/utilities/getTenantIDsFromValue.js.map +1 -0
  72. package/dist/utilities/getTenantOptions.d.ts +3 -3
  73. package/dist/utilities/getTenantOptions.d.ts.map +1 -1
  74. package/dist/utilities/getTenantOptions.js.map +1 -1
  75. package/dist/utilities/getUserTenantIDs.d.ts.map +1 -1
  76. package/dist/utilities/getUserTenantIDs.js +5 -3
  77. package/dist/utilities/getUserTenantIDs.js.map +1 -1
  78. package/dist/utilities/isValidTenantAssignment.d.ts +13 -0
  79. package/dist/utilities/isValidTenantAssignment.d.ts.map +1 -0
  80. package/dist/utilities/isValidTenantAssignment.js +28 -0
  81. package/dist/utilities/isValidTenantAssignment.js.map +1 -0
  82. package/dist/utilities/miniChalk.d.ts.map +1 -1
  83. package/dist/utilities/shouldRefreshTenantSelection.d.ts +5 -0
  84. package/dist/utilities/shouldRefreshTenantSelection.d.ts.map +1 -0
  85. package/dist/utilities/shouldRefreshTenantSelection.js +3 -0
  86. package/dist/utilities/shouldRefreshTenantSelection.js.map +1 -0
  87. package/package.json +24 -28
  88. package/dist/components/AssignTenantFieldModal/index.scss +0 -78
  89. package/dist/components/TenantField/index.scss +0 -52
  90. package/dist/components/TenantSelector/index.scss +0 -4
  91. package/dist/utilities/combineWhereConstraints.d.ts +0 -3
  92. package/dist/utilities/combineWhereConstraints.d.ts.map +0 -1
  93. package/dist/utilities/combineWhereConstraints.js +0 -19
  94. package/dist/utilities/combineWhereConstraints.js.map +0 -1
  95. package/dist/utilities/withTenantAccess.d.ts +0 -16
  96. package/dist/utilities/withTenantAccess.d.ts.map +0 -1
  97. package/dist/utilities/withTenantAccess.js +0 -76
  98. package/dist/utilities/withTenantAccess.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ export declare const shouldRefreshTenantSelection: ({ initialValue, tenantCookie, }: {
2
+ initialValue?: number | string;
3
+ tenantCookie?: string;
4
+ }) => boolean;
5
+ //# sourceMappingURL=shouldRefreshTenantSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldRefreshTenantSelection.d.ts","sourceRoot":"","sources":["../../src/utilities/shouldRefreshTenantSelection.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,oCAGtC;IACD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,KAAG,OAAiD,CAAA"}
@@ -0,0 +1,3 @@
1
+ export const shouldRefreshTenantSelection = ({ initialValue, tenantCookie })=>!initialValue && Boolean(tenantCookie);
2
+
3
+ //# sourceMappingURL=shouldRefreshTenantSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/shouldRefreshTenantSelection.ts"],"sourcesContent":["export const shouldRefreshTenantSelection = ({\n initialValue,\n tenantCookie,\n}: {\n initialValue?: number | string\n tenantCookie?: string\n}): boolean => !initialValue && Boolean(tenantCookie)\n"],"names":["shouldRefreshTenantSelection","initialValue","tenantCookie","Boolean"],"mappings":"AAAA,OAAO,MAAMA,+BAA+B,CAAC,EAC3CC,YAAY,EACZC,YAAY,EAIb,GAAc,CAACD,gBAAgBE,QAAQD,cAAa"}
package/package.json CHANGED
@@ -1,21 +1,16 @@
1
1
  {
2
2
  "name": "@payloadcms/plugin-multi-tenant",
3
- "version": "4.0.0-internal.d28e9fb",
3
+ "version": "4.0.0-internal.d7d662c",
4
4
  "description": "Multi Tenant plugin for Payload",
5
5
  "keywords": [
6
- "payload",
7
6
  "cms",
7
+ "multi-tenant",
8
+ "nextjs",
9
+ "payload",
8
10
  "plugin",
9
- "typescript",
10
11
  "react",
11
- "multi-tenant",
12
- "nextjs"
12
+ "typescript"
13
13
  ],
14
- "repository": {
15
- "type": "git",
16
- "url": "https://github.com/payloadcms/payload.git",
17
- "directory": "packages/plugin-multi-tenant"
18
- },
19
14
  "license": "MIT",
20
15
  "author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
21
16
  "maintainers": [
@@ -25,11 +20,22 @@
25
20
  "url": "https://payloadcms.com"
26
21
  }
27
22
  ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/payloadcms/payload.git",
26
+ "directory": "packages/plugin-multi-tenant"
27
+ },
28
+ "files": [
29
+ "dist",
30
+ "types.js",
31
+ "types.d.ts"
32
+ ],
33
+ "type": "module",
28
34
  "sideEffects": [
29
- "*.scss",
30
35
  "*.css"
31
36
  ],
32
- "type": "module",
37
+ "main": "./dist/index.js",
38
+ "types": "./dist/index.d.ts",
33
39
  "exports": {
34
40
  ".": {
35
41
  "import": "./dist/index.js",
@@ -72,22 +78,14 @@
72
78
  "default": "./dist/translations/languages/*.js"
73
79
  }
74
80
  },
75
- "main": "./dist/index.js",
76
- "types": "./dist/index.d.ts",
77
- "files": [
78
- "dist",
79
- "types.js",
80
- "types.d.ts"
81
- ],
82
81
  "devDependencies": {
83
- "@payloadcms/eslint-config": "3.28.0",
84
- "@payloadcms/translations": "4.0.0-internal.d28e9fb",
85
- "@payloadcms/ui": "4.0.0-internal.d28e9fb",
86
- "payload": "4.0.0-internal.d28e9fb"
82
+ "@payloadcms/translations": "4.0.0-internal.d7d662c",
83
+ "@payloadcms/ui": "4.0.0-internal.d7d662c",
84
+ "payload": "4.0.0-internal.d7d662c"
87
85
  },
88
86
  "peerDependencies": {
89
- "@payloadcms/ui": "4.0.0-internal.d28e9fb",
90
- "payload": "4.0.0-internal.d28e9fb"
87
+ "@payloadcms/ui": "4.0.0-internal.d7d662c",
88
+ "payload": "4.0.0-internal.d7d662c"
91
89
  },
92
90
  "homepage:": "https://payloadcms.com",
93
91
  "scripts": {
@@ -96,9 +94,7 @@
96
94
  "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
97
95
  "build:types": "tsc --emitDeclarationOnly --outDir dist",
98
96
  "clean": "rimraf {dist,*.tsbuildinfo}",
99
- "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
100
- "lint": "eslint .",
101
- "lint:fix": "eslint . --fix",
97
+ "copyfiles": "copyfiles -u 1 -e \"**/*.spec.*\" \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/",
102
98
  "pack:plugin": "pnpm build && pnpm pack"
103
99
  }
104
100
  }
@@ -1,78 +0,0 @@
1
- @layer payload-default {
2
- .assign-tenant-field-modal {
3
- pointer-events: none;
4
- display: flex;
5
- align-items: center;
6
- justify-content: center;
7
- height: 100%;
8
-
9
- &[open] {
10
- pointer-events: auto;
11
-
12
- .assign-tenant-field-modal__wrapper {
13
- display: flex;
14
- }
15
- }
16
-
17
- &__bg {
18
- z-index: -1;
19
-
20
- &:before {
21
- content: ' ';
22
- position: absolute;
23
- top: 0;
24
- right: 0;
25
- bottom: 0;
26
- left: 0;
27
- background: var(--theme-bg);
28
- opacity: 0.8;
29
- }
30
- }
31
-
32
- &__wrapper {
33
- z-index: 1;
34
- position: relative;
35
- display: none;
36
- flex-direction: column;
37
- max-width: calc(var(--base) * 30);
38
- min-width: min(500px, calc(100% - (var(--base) * 2)));
39
- border-radius: var(--style-radius-m);
40
- border: 1px solid var(--theme-elevation-100);
41
- background-color: var(--theme-bg);
42
- justify-content: center;
43
- }
44
-
45
- &__header {
46
- padding: calc(var(--base) * 0.75) var(--base);
47
- border-bottom: 1px solid var(--theme-elevation-100);
48
- display: flex;
49
- flex-direction: row;
50
- justify-content: space-between;
51
- gap: calc(var(--base) * 2);
52
- }
53
-
54
- &__collection-pill {
55
- align-self: flex-start;
56
- flex-shrink: 0;
57
- }
58
-
59
- &__content {
60
- display: flex;
61
- flex-direction: column;
62
- gap: calc(var(--base) * 0.5);
63
- padding: var(--base) var(--base) 0 var(--base);
64
- }
65
-
66
- &__controls {
67
- display: flex;
68
- gap: calc(var(--base) * 0.5);
69
- }
70
-
71
- &__actions {
72
- display: flex;
73
- justify-content: flex-end;
74
- gap: calc(var(--base) * 0.4);
75
- padding: var(--base);
76
- }
77
- }
78
- }
@@ -1,52 +0,0 @@
1
- .document-fields__main {
2
- --tenant-gutter-h-right: var(--main-gutter-h-right);
3
- --tenant-gutter-h-left: var(--main-gutter-h-left);
4
- }
5
- .document-fields__sidebar-fields {
6
- --tenant-gutter-h-right: var(--sidebar-gutter-h-right);
7
- --tenant-gutter-h-left: var(--sidebar-gutter-h-left);
8
- }
9
- .document-fields__sidebar-fields,
10
- .document-fields__main {
11
- .render-fields {
12
- .tenantField {
13
- width: calc(100% + var(--tenant-gutter-h-right) + var(--tenant-gutter-h-left));
14
- margin-left: calc(-1 * var(--tenant-gutter-h-left));
15
- border-bottom: 1px solid var(--theme-elevation-100);
16
- padding-top: calc(var(--base) * 1);
17
- padding-bottom: calc(var(--base) * 1.75);
18
-
19
- &__wrapper {
20
- padding-left: var(--tenant-gutter-h-left);
21
- padding-right: var(--tenant-gutter-h-right);
22
- }
23
-
24
- [dir='rtl'] & {
25
- margin-right: calc(-1 * var(--tenant-gutter-h-right));
26
- background-image: repeating-linear-gradient(
27
- -120deg,
28
- var(--theme-elevation-50) 0px,
29
- var(--theme-elevation-50) 1px,
30
- transparent 1px,
31
- transparent 5px
32
- );
33
- }
34
-
35
- &:not(:first-child) {
36
- border-top: 1px solid var(--theme-elevation-100);
37
- margin-top: calc(var(--base) * 1.25);
38
- }
39
- &:not(:last-child) {
40
- margin-bottom: var(--spacing-field);
41
- }
42
- &:first-child {
43
- margin-top: calc(var(--base) * -1.5);
44
- padding-top: calc(var(--base) * 1.5);
45
- }
46
-
47
- &__debug-pill {
48
- margin-bottom: calc(var(--base) * 0.5);
49
- }
50
- }
51
- }
52
- }
@@ -1,4 +0,0 @@
1
- .tenant-selector {
2
- width: 100%;
3
- margin-bottom: 2rem;
4
- }
@@ -1,3 +0,0 @@
1
- import type { Where } from 'payload';
2
- export declare function combineWhereConstraints(constraints: Array<Where>): Where;
3
- //# sourceMappingURL=combineWhereConstraints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"combineWhereConstraints.d.ts","sourceRoot":"","sources":["../../src/utilities/combineWhereConstraints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAgBxE"}
@@ -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<ConfigType> = {
4
- accessFunction?: Access;
5
- accessKey: AllAccessKeys[number];
6
- accessResultCallback?: MultiTenantPluginConfig<ConfigType>['usersAccessResultOverride'];
7
- adminUsersSlug: string;
8
- collection: CollectionConfig;
9
- fieldName: string;
10
- tenantsArrayFieldName?: string;
11
- tenantsArrayTenantFieldName?: string;
12
- userHasAccessToAllTenants: Required<MultiTenantPluginConfig<ConfigType>>['userHasAccessToAllTenants'];
13
- };
14
- export declare const withTenantAccess: <ConfigType>({ accessFunction, accessKey, accessResultCallback, adminUsersSlug, collection, fieldName, tenantsArrayFieldName, tenantsArrayTenantFieldName, userHasAccessToAllTenants, }: Args<ConfigType>) => (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,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,8KAUR,IAAI,CAAC,UAAU,CAAC,YACN,UAAU,KAAG,OAAO,CAAC,YAAY,CAoF7C,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, 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"}