@solidxai/core-ui 0.1.13-beta.3 → 0.1.13-beta.4
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/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +6 -11
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +6 -11
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +3 -7
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +3 -9
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +2 -10
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +2 -10
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +6 -11
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +6 -11
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +3 -7
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +3 -9
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +2 -3
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +2 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +2 -14
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +2 -14
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js +7 -5
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +7 -5
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +2 -14
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +2 -14
- package/dist/helpers/permissions.d.ts +13 -0
- package/dist/helpers/permissions.d.ts.map +1 -1
- package/dist/helpers/permissions.js +79 -0
- package/dist/helpers/permissions.js.map +1 -1
- package/dist/helpers/permissions.ts +92 -1
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ import { useGetSolidViewLayoutQuery } from "../../../redux/api/solidViewApi";
|
|
|
14
14
|
import qs from "qs";
|
|
15
15
|
import { useSearchParams } from "../../../hooks/useSearchParams";
|
|
16
16
|
import { SolidGlobalSearchElement } from "../common/SolidGlobalSearchElement";
|
|
17
|
-
import { permissionExpression } from "../../../helpers/permissions";
|
|
17
|
+
import { getCollectionViewPermissionNames, permissionExpression } from "../../../helpers/permissions";
|
|
18
18
|
import { SolidCreateButton } from "../common/SolidCreateButton";
|
|
19
19
|
import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
|
|
20
20
|
import { AggregationRule, GroupingRule } from "../common/GroupingComponent";
|
|
@@ -282,19 +282,7 @@ export const SolidTreeView = forwardRef<SolidTreeViewHandle, SolidTreeViewParams
|
|
|
282
282
|
useEffect(() => {
|
|
283
283
|
const fetchPermissions = async () => {
|
|
284
284
|
if (params.modelName) {
|
|
285
|
-
const permissionNames =
|
|
286
|
-
permissionExpression(params.modelName, 'create'),
|
|
287
|
-
permissionExpression(params.modelName, 'delete'),
|
|
288
|
-
permissionExpression(params.modelName, 'update'),
|
|
289
|
-
permissionExpression(params.modelName, 'deleteMany'),
|
|
290
|
-
permissionExpression(params.modelName, 'findOne'),
|
|
291
|
-
permissionExpression(params.modelName, 'findMany'),
|
|
292
|
-
permissionExpression(params.modelName, 'insertMany'),
|
|
293
|
-
permissionExpression('importTransaction', 'create'),
|
|
294
|
-
permissionExpression('exportTransaction', 'create'),
|
|
295
|
-
permissionExpression('userViewMetadata', 'create'),
|
|
296
|
-
permissionExpression('savedFilters', 'create')
|
|
297
|
-
];
|
|
285
|
+
const permissionNames = getCollectionViewPermissionNames(params.modelName);
|
|
298
286
|
const queryData = {
|
|
299
287
|
permissionNames: permissionNames,
|
|
300
288
|
};
|
|
@@ -1,2 +1,15 @@
|
|
|
1
1
|
export declare const permissionExpression: (modelName: string, permissionName: string) => string;
|
|
2
|
+
export declare const importPermissionExpressions: string[];
|
|
3
|
+
export declare const exportPermissionExpressions: string[];
|
|
4
|
+
export declare const hasAllPermissions: (actionsAllowed?: string[], permissionNames?: string[]) => boolean;
|
|
5
|
+
type CollectionViewPermissionOptions = {
|
|
6
|
+
includeDeleteMany?: boolean;
|
|
7
|
+
includeFindOne?: boolean;
|
|
8
|
+
includeInsertMany?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const getCollectionViewPermissionNames: (modelName: string, options?: CollectionViewPermissionOptions) => string[];
|
|
11
|
+
export declare const getFormViewPermissionNames: (modelName: string) => string[];
|
|
12
|
+
export declare const canImportRecords: (actionsAllowed?: string[], modelName?: string) => boolean;
|
|
13
|
+
export declare const canExportRecords: (actionsAllowed?: string[], modelName?: string) => boolean;
|
|
14
|
+
export {};
|
|
2
15
|
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/helpers/permissions.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,cAAe,MAAM,kBAAmB,MAAM,WAE9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/helpers/permissions.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,cAAe,MAAM,kBAAmB,MAAM,WAE9E,CAAC;AAEF,eAAO,MAAM,2BAA2B,UASvC,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAMvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oBAAoB,MAAM,EAAE,oBAAwB,MAAM,EAAE,YAEzF,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,gCAAgC,cAC9B,MAAM,YACR,+BAA+B,aAgC3C,CAAC;AAEF,eAAO,MAAM,0BAA0B,cAAe,MAAM,aAU3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,oBAAoB,MAAM,EAAE,cAAmB,MAAM,YAKjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,oBAAoB,MAAM,EAAE,cAAmB,MAAM,YAKjF,CAAC"}
|
|
@@ -1,6 +1,85 @@
|
|
|
1
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
+
if (ar || !(i in from)) {
|
|
4
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
+
ar[i] = from[i];
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
+
};
|
|
1
10
|
import { camelCase, upperFirst } from "lodash";
|
|
2
11
|
//Dynamic permission expression
|
|
3
12
|
export var permissionExpression = function (modelName, permissionName) {
|
|
4
13
|
return "".concat(upperFirst(camelCase(modelName)), "Controller.").concat(permissionName);
|
|
5
14
|
};
|
|
15
|
+
export var importPermissionExpressions = [
|
|
16
|
+
"ImportTransactionController.create",
|
|
17
|
+
"ImportTransactionController.getImportTemplate",
|
|
18
|
+
"ImportTransactionController.getImportInstructions",
|
|
19
|
+
"ImportTransactionController.getImportMappingInfo",
|
|
20
|
+
"ImportTransactionController.partialUpdate",
|
|
21
|
+
"ImportTransactionController.startImportSync",
|
|
22
|
+
"ImportTransactionController.startImportAsync",
|
|
23
|
+
"ImportTransactionController.exportFailedImportedImports",
|
|
24
|
+
];
|
|
25
|
+
export var exportPermissionExpressions = [
|
|
26
|
+
"ExportTemplateController.create",
|
|
27
|
+
"ExportTemplateController.delete",
|
|
28
|
+
"ExportTemplateController.findMany",
|
|
29
|
+
"ExportTemplateController.startExportSync",
|
|
30
|
+
"ExportTemplateController.startExportAsync",
|
|
31
|
+
];
|
|
32
|
+
export var hasAllPermissions = function (actionsAllowed, permissionNames) {
|
|
33
|
+
if (actionsAllowed === void 0) { actionsAllowed = []; }
|
|
34
|
+
if (permissionNames === void 0) { permissionNames = []; }
|
|
35
|
+
return permissionNames.every(function (permissionName) { return actionsAllowed.includes(permissionName); });
|
|
36
|
+
};
|
|
37
|
+
export var getCollectionViewPermissionNames = function (modelName, options) {
|
|
38
|
+
if (options === void 0) { options = {}; }
|
|
39
|
+
var _a = options.includeDeleteMany, includeDeleteMany = _a === void 0 ? true : _a, _b = options.includeFindOne, includeFindOne = _b === void 0 ? true : _b, _c = options.includeInsertMany, includeInsertMany = _c === void 0 ? true : _c;
|
|
40
|
+
var permissionNames = __spreadArray(__spreadArray(__spreadArray([
|
|
41
|
+
permissionExpression(modelName, "create"),
|
|
42
|
+
permissionExpression(modelName, "delete"),
|
|
43
|
+
permissionExpression(modelName, "update"),
|
|
44
|
+
permissionExpression(modelName, "findMany")
|
|
45
|
+
], importPermissionExpressions, true), exportPermissionExpressions, true), [
|
|
46
|
+
permissionExpression("userViewMetadata", "create"),
|
|
47
|
+
permissionExpression("savedFilters", "create"),
|
|
48
|
+
], false);
|
|
49
|
+
if (includeDeleteMany) {
|
|
50
|
+
permissionNames.push(permissionExpression(modelName, "deleteMany"));
|
|
51
|
+
}
|
|
52
|
+
if (includeFindOne) {
|
|
53
|
+
permissionNames.push(permissionExpression(modelName, "findOne"));
|
|
54
|
+
}
|
|
55
|
+
if (includeInsertMany) {
|
|
56
|
+
permissionNames.push(permissionExpression(modelName, "insertMany"));
|
|
57
|
+
}
|
|
58
|
+
return permissionNames;
|
|
59
|
+
};
|
|
60
|
+
export var getFormViewPermissionNames = function (modelName) {
|
|
61
|
+
return [
|
|
62
|
+
permissionExpression(modelName, "create"),
|
|
63
|
+
permissionExpression(modelName, "delete"),
|
|
64
|
+
permissionExpression(modelName, "update"),
|
|
65
|
+
permissionExpression(modelName, "findOne"),
|
|
66
|
+
permissionExpression(modelName, "publish"),
|
|
67
|
+
permissionExpression(modelName, "unpublish"),
|
|
68
|
+
permissionExpression("chatterMessage", "findMany"),
|
|
69
|
+
];
|
|
70
|
+
};
|
|
71
|
+
export var canImportRecords = function (actionsAllowed, modelName) {
|
|
72
|
+
if (actionsAllowed === void 0) { actionsAllowed = []; }
|
|
73
|
+
if (!modelName)
|
|
74
|
+
return false;
|
|
75
|
+
return actionsAllowed.includes(permissionExpression(modelName, "create")) &&
|
|
76
|
+
hasAllPermissions(actionsAllowed, importPermissionExpressions);
|
|
77
|
+
};
|
|
78
|
+
export var canExportRecords = function (actionsAllowed, modelName) {
|
|
79
|
+
if (actionsAllowed === void 0) { actionsAllowed = []; }
|
|
80
|
+
if (!modelName)
|
|
81
|
+
return false;
|
|
82
|
+
return actionsAllowed.includes(permissionExpression(modelName, "findMany")) &&
|
|
83
|
+
hasAllPermissions(actionsAllowed, exportPermissionExpressions);
|
|
84
|
+
};
|
|
6
85
|
//# sourceMappingURL=permissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/helpers/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE/C,+BAA+B;AAC/B,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,SAAiB,EAAE,cAAuB;IAC3E,OAAO,UAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,wBAAc,cAAc,CAAE,CAAA;AAC5E,CAAC,CAAC","sourcesContent":["\nimport { camelCase, upperFirst } from \"lodash\";\n\n//Dynamic permission expression\nexport const permissionExpression = (modelName: string, permissionName : string) => {\n return `${upperFirst(camelCase(modelName))}Controller.${permissionName}`\n}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/helpers/permissions.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE/C,+BAA+B;AAC/B,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,SAAiB,EAAE,cAAuB;IAC3E,OAAO,UAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,wBAAc,cAAc,CAAE,CAAA;AAC5E,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,2BAA2B,GAAG;IACvC,oCAAoC;IACpC,+CAA+C;IAC/C,mDAAmD;IACnD,kDAAkD;IAClD,2CAA2C;IAC3C,6CAA6C;IAC7C,8CAA8C;IAC9C,yDAAyD;CAC5D,CAAC;AAEF,MAAM,CAAC,IAAM,2BAA2B,GAAG;IACvC,iCAAiC;IACjC,iCAAiC;IACjC,mCAAmC;IACnC,0CAA0C;IAC1C,2CAA2C;CAC9C,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,cAA6B,EAAE,eAA8B;IAA7D,+BAAA,EAAA,mBAA6B;IAAE,gCAAA,EAAA,oBAA8B;IAC3F,OAAO,eAAe,CAAC,KAAK,CAAC,UAAC,cAAc,IAAK,OAAA,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAvC,CAAuC,CAAC,CAAC;AAC9F,CAAC,CAAC;AAQF,MAAM,CAAC,IAAM,gCAAgC,GAAG,UAC5C,SAAiB,EACjB,OAA6C;IAA7C,wBAAA,EAAA,YAA6C;IAGzC,IAAA,KAGA,OAAO,kBAHiB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA,EACxB,KAEA,OAAO,eAFc,EAArB,cAAc,mBAAG,IAAI,KAAA,EACrB,KACA,OAAO,kBADiB,EAAxB,iBAAiB,mBAAG,IAAI,KAAA,CAChB;IAEZ,IAAM,eAAe;QACjB,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC;OACxC,2BAA2B,SAC3B,2BAA2B;QAC9B,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC;QAClD,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC;aACjD,CAAC;IAEF,IAAI,iBAAiB,EAAE;QACnB,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;KACvE;IAED,IAAI,cAAc,EAAE;QAChB,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;KACpE;IAED,IAAI,iBAAiB,EAAE;QACnB,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;KACvE;IAED,OAAO,eAAe,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,0BAA0B,GAAG,UAAC,SAAiB;IACxD,OAAO;QACH,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACzC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1C,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1C,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC;QAC5C,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC;KACrD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,cAA6B,EAAE,SAAkB;IAAjD,+BAAA,EAAA,mBAA6B;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,OAAO,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,iBAAiB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,cAA6B,EAAE,SAAkB;IAAjD,+BAAA,EAAA,mBAA6B;IAC1D,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,OAAO,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACvE,iBAAiB,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;AACvE,CAAC,CAAC","sourcesContent":["\nimport { camelCase, upperFirst } from \"lodash\";\n\n//Dynamic permission expression\nexport const permissionExpression = (modelName: string, permissionName : string) => {\n return `${upperFirst(camelCase(modelName))}Controller.${permissionName}`\n};\n\nexport const importPermissionExpressions = [\n \"ImportTransactionController.create\",\n \"ImportTransactionController.getImportTemplate\",\n \"ImportTransactionController.getImportInstructions\",\n \"ImportTransactionController.getImportMappingInfo\",\n \"ImportTransactionController.partialUpdate\",\n \"ImportTransactionController.startImportSync\",\n \"ImportTransactionController.startImportAsync\",\n \"ImportTransactionController.exportFailedImportedImports\",\n];\n\nexport const exportPermissionExpressions = [\n \"ExportTemplateController.create\",\n \"ExportTemplateController.delete\",\n \"ExportTemplateController.findMany\",\n \"ExportTemplateController.startExportSync\",\n \"ExportTemplateController.startExportAsync\",\n];\n\nexport const hasAllPermissions = (actionsAllowed: string[] = [], permissionNames: string[] = []) => {\n return permissionNames.every((permissionName) => actionsAllowed.includes(permissionName));\n};\n\ntype CollectionViewPermissionOptions = {\n includeDeleteMany?: boolean;\n includeFindOne?: boolean;\n includeInsertMany?: boolean;\n};\n\nexport const getCollectionViewPermissionNames = (\n modelName: string,\n options: CollectionViewPermissionOptions = {},\n) => {\n const {\n includeDeleteMany = true,\n includeFindOne = true,\n includeInsertMany = true,\n } = options;\n\n const permissionNames = [\n permissionExpression(modelName, \"create\"),\n permissionExpression(modelName, \"delete\"),\n permissionExpression(modelName, \"update\"),\n permissionExpression(modelName, \"findMany\"),\n ...importPermissionExpressions,\n ...exportPermissionExpressions,\n permissionExpression(\"userViewMetadata\", \"create\"),\n permissionExpression(\"savedFilters\", \"create\"),\n ];\n\n if (includeDeleteMany) {\n permissionNames.push(permissionExpression(modelName, \"deleteMany\"));\n }\n\n if (includeFindOne) {\n permissionNames.push(permissionExpression(modelName, \"findOne\"));\n }\n\n if (includeInsertMany) {\n permissionNames.push(permissionExpression(modelName, \"insertMany\"));\n }\n\n return permissionNames;\n};\n\nexport const getFormViewPermissionNames = (modelName: string) => {\n return [\n permissionExpression(modelName, \"create\"),\n permissionExpression(modelName, \"delete\"),\n permissionExpression(modelName, \"update\"),\n permissionExpression(modelName, \"findOne\"),\n permissionExpression(modelName, \"publish\"),\n permissionExpression(modelName, \"unpublish\"),\n permissionExpression(\"chatterMessage\", \"findMany\"),\n ];\n};\n\nexport const canImportRecords = (actionsAllowed: string[] = [], modelName?: string) => {\n if (!modelName) return false;\n\n return actionsAllowed.includes(permissionExpression(modelName, \"create\")) &&\n hasAllPermissions(actionsAllowed, importPermissionExpressions);\n};\n\nexport const canExportRecords = (actionsAllowed: string[] = [], modelName?: string) => {\n if (!modelName) return false;\n\n return actionsAllowed.includes(permissionExpression(modelName, \"findMany\")) &&\n hasAllPermissions(actionsAllowed, exportPermissionExpressions);\n};\n"]}
|
|
@@ -4,4 +4,95 @@ import { camelCase, upperFirst } from "lodash";
|
|
|
4
4
|
//Dynamic permission expression
|
|
5
5
|
export const permissionExpression = (modelName: string, permissionName : string) => {
|
|
6
6
|
return `${upperFirst(camelCase(modelName))}Controller.${permissionName}`
|
|
7
|
-
};
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const importPermissionExpressions = [
|
|
10
|
+
"ImportTransactionController.create",
|
|
11
|
+
"ImportTransactionController.getImportTemplate",
|
|
12
|
+
"ImportTransactionController.getImportInstructions",
|
|
13
|
+
"ImportTransactionController.getImportMappingInfo",
|
|
14
|
+
"ImportTransactionController.partialUpdate",
|
|
15
|
+
"ImportTransactionController.startImportSync",
|
|
16
|
+
"ImportTransactionController.startImportAsync",
|
|
17
|
+
"ImportTransactionController.exportFailedImportedImports",
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export const exportPermissionExpressions = [
|
|
21
|
+
"ExportTemplateController.create",
|
|
22
|
+
"ExportTemplateController.delete",
|
|
23
|
+
"ExportTemplateController.findMany",
|
|
24
|
+
"ExportTemplateController.startExportSync",
|
|
25
|
+
"ExportTemplateController.startExportAsync",
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
export const hasAllPermissions = (actionsAllowed: string[] = [], permissionNames: string[] = []) => {
|
|
29
|
+
return permissionNames.every((permissionName) => actionsAllowed.includes(permissionName));
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type CollectionViewPermissionOptions = {
|
|
33
|
+
includeDeleteMany?: boolean;
|
|
34
|
+
includeFindOne?: boolean;
|
|
35
|
+
includeInsertMany?: boolean;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const getCollectionViewPermissionNames = (
|
|
39
|
+
modelName: string,
|
|
40
|
+
options: CollectionViewPermissionOptions = {},
|
|
41
|
+
) => {
|
|
42
|
+
const {
|
|
43
|
+
includeDeleteMany = true,
|
|
44
|
+
includeFindOne = true,
|
|
45
|
+
includeInsertMany = true,
|
|
46
|
+
} = options;
|
|
47
|
+
|
|
48
|
+
const permissionNames = [
|
|
49
|
+
permissionExpression(modelName, "create"),
|
|
50
|
+
permissionExpression(modelName, "delete"),
|
|
51
|
+
permissionExpression(modelName, "update"),
|
|
52
|
+
permissionExpression(modelName, "findMany"),
|
|
53
|
+
...importPermissionExpressions,
|
|
54
|
+
...exportPermissionExpressions,
|
|
55
|
+
permissionExpression("userViewMetadata", "create"),
|
|
56
|
+
permissionExpression("savedFilters", "create"),
|
|
57
|
+
];
|
|
58
|
+
|
|
59
|
+
if (includeDeleteMany) {
|
|
60
|
+
permissionNames.push(permissionExpression(modelName, "deleteMany"));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (includeFindOne) {
|
|
64
|
+
permissionNames.push(permissionExpression(modelName, "findOne"));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (includeInsertMany) {
|
|
68
|
+
permissionNames.push(permissionExpression(modelName, "insertMany"));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return permissionNames;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const getFormViewPermissionNames = (modelName: string) => {
|
|
75
|
+
return [
|
|
76
|
+
permissionExpression(modelName, "create"),
|
|
77
|
+
permissionExpression(modelName, "delete"),
|
|
78
|
+
permissionExpression(modelName, "update"),
|
|
79
|
+
permissionExpression(modelName, "findOne"),
|
|
80
|
+
permissionExpression(modelName, "publish"),
|
|
81
|
+
permissionExpression(modelName, "unpublish"),
|
|
82
|
+
permissionExpression("chatterMessage", "findMany"),
|
|
83
|
+
];
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const canImportRecords = (actionsAllowed: string[] = [], modelName?: string) => {
|
|
87
|
+
if (!modelName) return false;
|
|
88
|
+
|
|
89
|
+
return actionsAllowed.includes(permissionExpression(modelName, "create")) &&
|
|
90
|
+
hasAllPermissions(actionsAllowed, importPermissionExpressions);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export const canExportRecords = (actionsAllowed: string[] = [], modelName?: string) => {
|
|
94
|
+
if (!modelName) return false;
|
|
95
|
+
|
|
96
|
+
return actionsAllowed.includes(permissionExpression(modelName, "findMany")) &&
|
|
97
|
+
hasAllPermissions(actionsAllowed, exportPermissionExpressions);
|
|
98
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidxai/core-ui",
|
|
3
|
-
"version": "0.1.13-beta.
|
|
3
|
+
"version": "0.1.13-beta.4",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build:tailwind": "tailwindcss -i ./src/resources/solid-tailwind.css -o ./src/resources/solid-tailwind-generated.css -c ./tailwind.config.js --minify",
|
|
6
6
|
"prebuild": "npm run build:tailwind && npm run copy-resources && npm run copy-styles",
|