@payloadcms/plugin-multi-tenant 4.0.0-internal.d28e9fb → 4.0.0-internal.d3909a9
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.
- package/LICENSE.md +1 -1
- package/dist/components/AssignTenantFieldModal/index.client.d.ts +2 -3
- package/dist/components/AssignTenantFieldModal/index.client.d.ts.map +1 -1
- package/dist/components/AssignTenantFieldModal/index.client.js +26 -81
- package/dist/components/AssignTenantFieldModal/index.client.js.map +1 -1
- package/dist/components/GlobalViewRedirect/index.d.ts +1 -1
- package/dist/components/GlobalViewRedirect/index.d.ts.map +1 -1
- package/dist/components/GlobalViewRedirect/index.js +6 -4
- package/dist/components/GlobalViewRedirect/index.js.map +1 -1
- package/dist/components/TenantField/index.client.d.ts +1 -1
- package/dist/components/TenantField/index.client.d.ts.map +1 -1
- package/dist/components/TenantField/index.client.js +85 -75
- package/dist/components/TenantField/index.client.js.map +1 -1
- package/dist/components/TenantField/index.css +44 -0
- package/dist/components/TenantSelector/index.client.d.ts +2 -2
- package/dist/components/TenantSelector/index.client.d.ts.map +1 -1
- package/dist/components/TenantSelector/index.client.js +4 -2
- package/dist/components/TenantSelector/index.client.js.map +1 -1
- package/dist/components/TenantSelector/index.css +13 -0
- package/dist/defaults.d.ts.map +1 -1
- package/dist/endpoints/getTenantOptionsEndpoint.d.ts +2 -2
- package/dist/endpoints/getTenantOptionsEndpoint.d.ts.map +1 -1
- package/dist/endpoints/getTenantOptionsEndpoint.js.map +1 -1
- package/dist/fields/tenantField/index.d.ts +4 -2
- package/dist/fields/tenantField/index.d.ts.map +1 -1
- package/dist/fields/tenantField/index.js +36 -9
- package/dist/fields/tenantField/index.js.map +1 -1
- package/dist/filters/filterDocumentsByTenants.d.ts +3 -3
- package/dist/filters/filterDocumentsByTenants.d.ts.map +1 -1
- package/dist/filters/filterDocumentsByTenants.js.map +1 -1
- package/dist/hooks/afterTenantDelete.d.ts +1 -1
- package/dist/hooks/afterTenantDelete.d.ts.map +1 -1
- package/dist/hooks/afterTenantDelete.js +7 -1
- package/dist/hooks/afterTenantDelete.js.map +1 -1
- package/dist/hooks/enforceTenantMembership.d.ts +15 -0
- package/dist/hooks/enforceTenantMembership.d.ts.map +1 -0
- package/dist/hooks/enforceTenantMembership.js +39 -0
- package/dist/hooks/enforceTenantMembership.js.map +1 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -6
- package/dist/index.js.map +1 -1
- package/dist/providers/TenantSelectionProvider/index.client.d.ts.map +1 -1
- package/dist/providers/TenantSelectionProvider/index.client.js +44 -17
- package/dist/providers/TenantSelectionProvider/index.client.js.map +1 -1
- package/dist/providers/TenantSelectionProvider/index.d.ts +6 -5
- package/dist/providers/TenantSelectionProvider/index.d.ts.map +1 -1
- package/dist/providers/TenantSelectionProvider/index.js +5 -3
- package/dist/providers/TenantSelectionProvider/index.js.map +1 -1
- package/dist/translations/languages/en.d.ts.map +1 -1
- package/dist/types.d.ts +9 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/addCollectionAccess.d.ts +8 -10
- package/dist/utilities/addCollectionAccess.d.ts.map +1 -1
- package/dist/utilities/addCollectionAccess.js +99 -21
- package/dist/utilities/addCollectionAccess.js.map +1 -1
- package/dist/utilities/addFilterOptionsToFields.d.ts +3 -3
- package/dist/utilities/addFilterOptionsToFields.d.ts.map +1 -1
- package/dist/utilities/addFilterOptionsToFields.js +6 -9
- package/dist/utilities/addFilterOptionsToFields.js.map +1 -1
- package/dist/utilities/generateCookie.d.ts.map +1 -1
- package/dist/utilities/getCollectionIDType.d.ts +1 -1
- package/dist/utilities/getGlobalViewRedirect.d.ts +5 -4
- package/dist/utilities/getGlobalViewRedirect.d.ts.map +1 -1
- package/dist/utilities/getGlobalViewRedirect.js +4 -3
- package/dist/utilities/getGlobalViewRedirect.js.map +1 -1
- package/dist/utilities/getTenantIDsFromValue.d.ts +2 -0
- package/dist/utilities/getTenantIDsFromValue.d.ts.map +1 -0
- package/dist/utilities/getTenantIDsFromValue.js +14 -0
- package/dist/utilities/getTenantIDsFromValue.js.map +1 -0
- package/dist/utilities/getTenantOptions.d.ts +3 -3
- package/dist/utilities/getTenantOptions.d.ts.map +1 -1
- package/dist/utilities/getTenantOptions.js.map +1 -1
- package/dist/utilities/getUserTenantIDs.d.ts.map +1 -1
- package/dist/utilities/getUserTenantIDs.js +5 -3
- package/dist/utilities/getUserTenantIDs.js.map +1 -1
- package/dist/utilities/isValidTenantAssignment.d.ts +13 -0
- package/dist/utilities/isValidTenantAssignment.d.ts.map +1 -0
- package/dist/utilities/isValidTenantAssignment.js +28 -0
- package/dist/utilities/isValidTenantAssignment.js.map +1 -0
- package/dist/utilities/miniChalk.d.ts.map +1 -1
- package/dist/utilities/shouldRefreshTenantSelection.d.ts +5 -0
- package/dist/utilities/shouldRefreshTenantSelection.d.ts.map +1 -0
- package/dist/utilities/shouldRefreshTenantSelection.js +3 -0
- package/dist/utilities/shouldRefreshTenantSelection.js.map +1 -0
- package/package.json +24 -28
- package/dist/components/AssignTenantFieldModal/index.scss +0 -78
- package/dist/components/TenantField/index.scss +0 -52
- package/dist/components/TenantSelector/index.scss +0 -4
- package/dist/utilities/combineWhereConstraints.d.ts +0 -3
- package/dist/utilities/combineWhereConstraints.d.ts.map +0 -1
- package/dist/utilities/combineWhereConstraints.js +0 -19
- package/dist/utilities/combineWhereConstraints.js.map +0 -1
- package/dist/utilities/withTenantAccess.d.ts +0 -16
- package/dist/utilities/withTenantAccess.d.ts.map +0 -1
- package/dist/utilities/withTenantAccess.js +0 -76
- package/dist/utilities/withTenantAccess.js.map +0 -1
|
@@ -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 @@
|
|
|
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.
|
|
3
|
+
"version": "4.0.0-internal.d3909a9",
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
84
|
-
"@payloadcms/
|
|
85
|
-
"@payloadcms/
|
|
86
|
-
"payload": "4.0.0-internal.d28e9fb"
|
|
82
|
+
"payload": "4.0.0-internal.d3909a9",
|
|
83
|
+
"@payloadcms/ui": "4.0.0-internal.d3909a9",
|
|
84
|
+
"@payloadcms/translations": "4.0.0-internal.d3909a9"
|
|
87
85
|
},
|
|
88
86
|
"peerDependencies": {
|
|
89
|
-
"
|
|
90
|
-
"
|
|
87
|
+
"payload": "4.0.0-internal.d3909a9",
|
|
88
|
+
"@payloadcms/ui": "4.0.0-internal.d3909a9"
|
|
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 +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"}
|