@antelopejs/dms 0.4.1 → 0.4.2
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/CHANGELOG.md +12 -0
- package/dist/pages/settings/users/permission-tree-nodes.d.ts +3 -0
- package/dist/pages/settings/users/permission-tree-nodes.js +22 -0
- package/dist/pages/settings/users/permission-tree-nodes.js.map +1 -0
- package/dist/pages/settings/users/roles.js +2 -16
- package/dist/pages/settings/users/roles.js.map +1 -1
- package/dist/test/unit/pages/settings/permission-tree-nodes.test.d.ts +1 -0
- package/dist/test/unit/pages/settings/permission-tree-nodes.test.js +68 -0
- package/dist/test/unit/pages/settings/permission-tree-nodes.test.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.4.2
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.1...v0.4.2)
|
|
6
|
+
|
|
7
|
+
### 🩹 Fixes
|
|
8
|
+
|
|
9
|
+
- **roles:** Show permissions whose parent id is not registered ([#44](https://github.com/AntelopeJS/dms/pull/44))
|
|
10
|
+
|
|
11
|
+
### ❤️ Contributors
|
|
12
|
+
|
|
13
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
14
|
+
|
|
3
15
|
## v0.4.1
|
|
4
16
|
|
|
5
17
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.0...v0.4.1)
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { PermissionTree } from "@antelopejs/interface-dms/permissions";
|
|
2
|
+
import type { FormComponents } from "@antelopejs/interface-dms/base/form";
|
|
3
|
+
export declare function mapPermissionTreeToPermissionNodes(permissionTree: Record<string, PermissionTree>): FormComponents.PermissionsTreeNode[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapPermissionTreeToPermissionNodes = mapPermissionTreeToPermissionNodes;
|
|
4
|
+
function mapPermissionTreeToPermissionNodes(permissionTree) {
|
|
5
|
+
return Object.values(permissionTree).flatMap(mapPermissionTreeNode);
|
|
6
|
+
}
|
|
7
|
+
function mapPermissionTreeNode(node) {
|
|
8
|
+
if (!node.data)
|
|
9
|
+
return mapPermissionTreeToPermissionNodes(node.children);
|
|
10
|
+
if (node.data.defaultGranted)
|
|
11
|
+
return [];
|
|
12
|
+
const children = mapPermissionTreeToPermissionNodes(node.children);
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
id: node.data.id,
|
|
16
|
+
label: node.data.title ?? "Unknown Permission",
|
|
17
|
+
icon: node.data.icon,
|
|
18
|
+
children: children.length > 0 ? children : undefined,
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=permission-tree-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-tree-nodes.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/permission-tree-nodes.ts"],"names":[],"mappings":";;AAaA,gFAIC;AAJD,SAAgB,kCAAkC,CAChD,cAA8C;IAE9C,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAoB;IAEpB,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,kCAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnE,OAAO;QACL;YACE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,oBAAoB;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACrD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -17,22 +17,8 @@ const page_1 = require("@antelopejs/interface-dms/page");
|
|
|
17
17
|
const permissions_1 = require("@antelopejs/interface-dms/permissions");
|
|
18
18
|
const base_1 = require("@antelopejs/interface-dms/base");
|
|
19
19
|
const category_1 = require("./category");
|
|
20
|
+
const permission_tree_nodes_1 = require("./permission-tree-nodes");
|
|
20
21
|
(0, interface_data_api_1.RegisterDataController)()(roles_1.roleSettingDataAPI);
|
|
21
|
-
function mapPermissionTreeToPermissionNodes(permissionTree) {
|
|
22
|
-
return Object.values(permissionTree)
|
|
23
|
-
.filter((node) => node.data && !node.data.defaultGranted)
|
|
24
|
-
.map((node) => {
|
|
25
|
-
const permissionNode = {
|
|
26
|
-
id: node.data?.id ?? "",
|
|
27
|
-
label: node.data?.title ?? "Unknown Permission",
|
|
28
|
-
icon: node.data?.icon,
|
|
29
|
-
children: Object.keys(node.children).length > 0
|
|
30
|
-
? mapPermissionTreeToPermissionNodes(node.children)
|
|
31
|
-
: undefined,
|
|
32
|
-
};
|
|
33
|
-
return permissionNode;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
22
|
let RolesSettingsController = class RolesSettingsController extends (0, page_1.PageController)("roles", {
|
|
37
23
|
displayName: "$menu.roles",
|
|
38
24
|
category: category_1.userCategory,
|
|
@@ -42,7 +28,7 @@ let RolesSettingsController = class RolesSettingsController extends (0, page_1.P
|
|
|
42
28
|
}) {
|
|
43
29
|
async getPermissionsTree() {
|
|
44
30
|
const permissionTree = await (0, permissions_1.GetPermissions)();
|
|
45
|
-
return mapPermissionTreeToPermissionNodes(permissionTree);
|
|
31
|
+
return (0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(permissionTree);
|
|
46
32
|
}
|
|
47
33
|
static table = (0, base_1.TableView)(roles_1.roleSettingDataAPI, {
|
|
48
34
|
caption: "$page.settings.roles.table.caption",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAgD;AAChD,uEAAwE;AACxE,4EAAsF;AACtF,yDAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/roles.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6DAAgD;AAChD,uEAAwE;AACxE,4EAAsF;AACtF,yDAA8E;AAC9E,uEAAuE;AACvE,yDAA2D;AAE3D,yCAA0C;AAC1C,mEAA6E;AAE7E,IAAA,2CAAsB,GAAE,CAAC,0BAAkB,CAAC,CAAC;AAGtC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,qBAAc,EAAC,OAAO,EAAE;IACnE,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,uBAAY;IACtB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,kCAAkC;CAChD,CAAC;IAEM,AAAN,KAAK,CAAC,kBAAkB;QACtB,MAAM,cAAc,GAAG,MAAM,IAAA,4BAAc,GAAE,CAAC;QAC9C,OAAO,IAAA,0DAAkC,EAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,IAAA,gBAAS,EAAC,0BAAkB,EAAE;QAC3C,OAAO,EAAE,oCAAoC;QAC7C,UAAU,EAAE;YACV,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;YAC1C,YAAY,EAAE,IAAI;SACnB;QACD,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;KAChC,CAAC,CAAC;;AAzBQ,0DAAuB;AAQ5B;IADL,IAAA,mBAAG,EAAC,kBAAkB,CAAC;;;;iEAIvB;kCAXU,uBAAuB;IADnC,IAAA,mBAAY,GAAE;GACF,uBAAuB,CA0BnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const permission_tree_nodes_1 = require("../../../../pages/settings/users/permission-tree-nodes");
|
|
5
|
+
function registered(id, children = {}, overrides = {}) {
|
|
6
|
+
return { data: { id, title: id, ...overrides }, children };
|
|
7
|
+
}
|
|
8
|
+
function unregistered(children) {
|
|
9
|
+
return { children };
|
|
10
|
+
}
|
|
11
|
+
describe("[unit] pages/settings/users/permission-tree-nodes", () => {
|
|
12
|
+
it("maps registered permissions to nested nodes", () => {
|
|
13
|
+
const tree = {
|
|
14
|
+
pages: registered("pages", {
|
|
15
|
+
list: registered("pages.list", {}, { title: "List", icon: "i-list" }),
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
(0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([
|
|
19
|
+
{
|
|
20
|
+
id: "pages",
|
|
21
|
+
label: "pages",
|
|
22
|
+
icon: undefined,
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
id: "pages.list",
|
|
26
|
+
label: "List",
|
|
27
|
+
icon: "i-list",
|
|
28
|
+
children: undefined,
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
it("lifts permissions whose parent id is not registered", () => {
|
|
35
|
+
const tree = {
|
|
36
|
+
media: unregistered({
|
|
37
|
+
upload: registered("media.upload"),
|
|
38
|
+
folders: unregistered({ manage: registered("media.folders.manage") }),
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
(0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree).map((node) => node.id)).to.deep.equal(["media.upload", "media.folders.manage"]);
|
|
42
|
+
});
|
|
43
|
+
it("lifts a permission registered three levels below any registered id", () => {
|
|
44
|
+
const tree = {
|
|
45
|
+
a: unregistered({ b: unregistered({ c: registered("a.b.c") }) }),
|
|
46
|
+
};
|
|
47
|
+
(0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([
|
|
48
|
+
{ id: "a.b.c", label: "a.b.c", icon: undefined, children: undefined },
|
|
49
|
+
]);
|
|
50
|
+
});
|
|
51
|
+
it("lifts an orphan permission into its closest registered ancestor", () => {
|
|
52
|
+
const tree = {
|
|
53
|
+
a: registered("a", {
|
|
54
|
+
b: unregistered({ c: registered("a.b.c") }),
|
|
55
|
+
}),
|
|
56
|
+
};
|
|
57
|
+
const [root] = (0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree);
|
|
58
|
+
(0, chai_1.expect)(root.id).to.equal("a");
|
|
59
|
+
(0, chai_1.expect)(root.children?.map((node) => node.id)).to.deep.equal(["a.b.c"]);
|
|
60
|
+
});
|
|
61
|
+
it("hides a default-granted permission together with its subtree", () => {
|
|
62
|
+
const tree = {
|
|
63
|
+
docs: registered("docs", { edit: registered("docs.edit") }, { defaultGranted: true }),
|
|
64
|
+
};
|
|
65
|
+
(0, chai_1.expect)((0, permission_tree_nodes_1.mapPermissionTreeToPermissionNodes)(tree)).to.deep.equal([]);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=permission-tree-nodes.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-tree-nodes.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/pages/settings/permission-tree-nodes.test.ts"],"names":[],"mappings":"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"}
|