@nocobase/plugin-acl 0.13.0-alpha.3 → 0.13.0-alpha.5
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/client/index.js +1 -11
- package/dist/index.js +37 -16
- package/dist/server/actions/available-actions.js +26 -4
- package/dist/server/actions/role-check.js +26 -4
- package/dist/server/actions/role-collections.js +28 -6
- package/dist/server/actions/user-setDefaultRole.js +26 -4
- package/dist/server/collections/roles-users.js +22 -4
- package/dist/server/collections/roles.js +22 -4
- package/dist/server/collections/rolesResources.js +22 -4
- package/dist/server/collections/rolesResourcesActions.js +22 -4
- package/dist/server/collections/rolesResourcesScopes.js +22 -4
- package/dist/server/collections/users.js +24 -7
- package/dist/server/index.js +33 -11
- package/dist/server/middlewares/setCurrentRole.js +26 -4
- package/dist/server/migrations/20221214072638-set-role-snippets.js +24 -7
- package/dist/server/model/RoleModel.js +28 -7
- package/dist/server/model/RoleResourceActionModel.js +28 -7
- package/dist/server/model/RoleResourceModel.js +33 -12
- package/dist/server/server.js +125 -70
- package/dist/swagger/index.js +22 -4
- package/package.json +3 -2
package/dist/client/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
(function(
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("@nocobase/client")) : typeof define === "function" && define.amd ? define(["exports", "@nocobase/client"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["@nocobase/plugin-acl"] = {}, global["@nocobase/client"]));
|
|
3
|
-
})(this, function(exports2, client) {
|
|
4
|
-
"use strict";
|
|
5
|
-
class AclPlugin extends client.Plugin {
|
|
6
|
-
async load() {
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
exports2.default = AclPlugin;
|
|
10
|
-
Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
11
|
-
});
|
|
1
|
+
(function(e,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("@nocobase/client")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client"],n):(e=typeof globalThis!="undefined"?globalThis:e||self,n(e["@nocobase/plugin-acl"]={},e["@nocobase/client"]))})(this,function(e,n){"use strict";var c=(e,n,o)=>new Promise((u,l)=>{var d=i=>{try{t(o.next(i))}catch(s){l(s)}},f=i=>{try{t(o.throw(i))}catch(s){l(s)}},t=i=>i.done?u(i.value):Promise.resolve(i.value).then(d,f);t((o=o.apply(e,n)).next())});class o extends n.Plugin{load(){return c(this,null,function*(){})}}e.default=o,Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var src_exports = {};
|
|
30
|
+
__export(src_exports, {
|
|
31
|
+
default: () => import_server.default
|
|
12
32
|
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
33
|
+
module.exports = __toCommonJS(src_exports);
|
|
34
|
+
__reExport(src_exports, require("./server"), module.exports);
|
|
35
|
+
var import_server = __toESM(require("./server"));
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
...require("./server")
|
|
18
39
|
});
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var available_actions_exports = {};
|
|
19
|
+
__export(available_actions_exports, {
|
|
20
|
+
availableActionResource: () => availableActionResource
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(available_actions_exports);
|
|
3
23
|
const availableActionResource = {
|
|
4
24
|
name: "availableActions",
|
|
5
25
|
actions: {
|
|
@@ -16,5 +36,7 @@ const availableActionResource = {
|
|
|
16
36
|
}
|
|
17
37
|
}
|
|
18
38
|
};
|
|
19
|
-
|
|
20
|
-
exports
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
availableActionResource
|
|
42
|
+
});
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var role_check_exports = {};
|
|
19
|
+
__export(role_check_exports, {
|
|
20
|
+
checkAction: () => checkAction
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(role_check_exports);
|
|
3
23
|
const map2obj = (map) => {
|
|
4
24
|
const obj = {};
|
|
5
25
|
for (const [key, value] of map) {
|
|
@@ -41,5 +61,7 @@ async function checkAction(ctx, next) {
|
|
|
41
61
|
};
|
|
42
62
|
await next();
|
|
43
63
|
}
|
|
44
|
-
|
|
45
|
-
exports
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
checkAction
|
|
67
|
+
});
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var role_collections_exports = {};
|
|
19
|
+
__export(role_collections_exports, {
|
|
20
|
+
roleCollectionsResource: () => roleCollectionsResource
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(role_collections_exports);
|
|
3
23
|
function totalPage(total, pageSize) {
|
|
4
24
|
return Math.ceil(total / pageSize);
|
|
5
25
|
}
|
|
@@ -11,7 +31,7 @@ const roleCollectionsResource = {
|
|
|
11
31
|
const { page = 1, pageSize = 20 } = ctx.action.params;
|
|
12
32
|
const db = ctx.db;
|
|
13
33
|
const collectionRepository = db.getRepository("collections");
|
|
14
|
-
db.getRepository("fields");
|
|
34
|
+
const fieldRepository = db.getRepository("fields");
|
|
15
35
|
const [collections, count] = await collectionRepository.findAndCount({
|
|
16
36
|
filter: ctx.action.params.filter,
|
|
17
37
|
sort: "sort"
|
|
@@ -26,7 +46,7 @@ const roleCollectionsResource = {
|
|
|
26
46
|
const items = collections.map((collection, i) => {
|
|
27
47
|
const exists = roleResourcesNames.includes(collection.get("name"));
|
|
28
48
|
const usingConfig = roleResourceActionResourceNames.includes(collection.get("name")) ? "resourceAction" : "strategy";
|
|
29
|
-
db.getCollection(collection.get("name"));
|
|
49
|
+
const c = db.getCollection(collection.get("name"));
|
|
30
50
|
return {
|
|
31
51
|
type: "collection",
|
|
32
52
|
name: collection.get("name"),
|
|
@@ -49,5 +69,7 @@ const roleCollectionsResource = {
|
|
|
49
69
|
}
|
|
50
70
|
}
|
|
51
71
|
};
|
|
52
|
-
|
|
53
|
-
exports
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
roleCollectionsResource
|
|
75
|
+
});
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var user_setDefaultRole_exports = {};
|
|
19
|
+
__export(user_setDefaultRole_exports, {
|
|
20
|
+
setDefaultRole: () => setDefaultRole
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(user_setDefaultRole_exports);
|
|
3
23
|
async function setDefaultRole(ctx, next) {
|
|
4
24
|
const {
|
|
5
25
|
values: { roleName }
|
|
@@ -39,5 +59,7 @@ async function setDefaultRole(ctx, next) {
|
|
|
39
59
|
ctx.body = "ok";
|
|
40
60
|
await next();
|
|
41
61
|
}
|
|
42
|
-
|
|
43
|
-
exports
|
|
62
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
63
|
+
0 && (module.exports = {
|
|
64
|
+
setDefaultRole
|
|
65
|
+
});
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var roles_users_exports = {};
|
|
19
|
+
__export(roles_users_exports, {
|
|
20
|
+
default: () => roles_users_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(roles_users_exports);
|
|
3
23
|
var roles_users_default = {
|
|
4
24
|
name: "rolesUsers",
|
|
5
25
|
duplicator: "optional",
|
|
6
26
|
namespace: "acl.acl",
|
|
7
27
|
fields: [{ type: "boolean", name: "default" }]
|
|
8
28
|
};
|
|
9
|
-
|
|
10
|
-
module.exports = roles_users_default;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var roles_exports = {};
|
|
19
|
+
__export(roles_exports, {
|
|
20
|
+
default: () => roles_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(roles_exports);
|
|
3
23
|
var roles_default = {
|
|
4
24
|
namespace: "acl.acl",
|
|
5
25
|
duplicator: {
|
|
@@ -99,5 +119,3 @@ var roles_default = {
|
|
|
99
119
|
}
|
|
100
120
|
]
|
|
101
121
|
};
|
|
102
|
-
|
|
103
|
-
module.exports = roles_default;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var rolesResources_exports = {};
|
|
19
|
+
__export(rolesResources_exports, {
|
|
20
|
+
default: () => rolesResources_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(rolesResources_exports);
|
|
3
23
|
var rolesResources_default = {
|
|
4
24
|
namespace: "acl.acl",
|
|
5
25
|
duplicator: "required",
|
|
@@ -31,5 +51,3 @@ var rolesResources_default = {
|
|
|
31
51
|
}
|
|
32
52
|
]
|
|
33
53
|
};
|
|
34
|
-
|
|
35
|
-
module.exports = rolesResources_default;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var rolesResourcesActions_exports = {};
|
|
19
|
+
__export(rolesResourcesActions_exports, {
|
|
20
|
+
default: () => rolesResourcesActions_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(rolesResourcesActions_exports);
|
|
3
23
|
var rolesResourcesActions_default = {
|
|
4
24
|
namespace: "acl.acl",
|
|
5
25
|
duplicator: "required",
|
|
@@ -29,5 +49,3 @@ var rolesResourcesActions_default = {
|
|
|
29
49
|
}
|
|
30
50
|
]
|
|
31
51
|
};
|
|
32
|
-
|
|
33
|
-
module.exports = rolesResourcesActions_default;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var rolesResourcesScopes_exports = {};
|
|
19
|
+
__export(rolesResourcesScopes_exports, {
|
|
20
|
+
default: () => rolesResourcesScopes_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(rolesResourcesScopes_exports);
|
|
3
23
|
var rolesResourcesScopes_default = {
|
|
4
24
|
namespace: "acl.acl",
|
|
5
25
|
duplicator: "required",
|
|
@@ -23,5 +43,3 @@ var rolesResourcesScopes_default = {
|
|
|
23
43
|
}
|
|
24
44
|
]
|
|
25
45
|
};
|
|
26
|
-
|
|
27
|
-
module.exports = rolesResourcesScopes_default;
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var users_exports = {};
|
|
19
|
+
__export(users_exports, {
|
|
20
|
+
default: () => users_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(users_exports);
|
|
23
|
+
var import_database = require("@nocobase/database");
|
|
24
|
+
var users_default = (0, import_database.extend)({
|
|
6
25
|
name: "users",
|
|
7
26
|
fields: [
|
|
8
27
|
{
|
|
@@ -31,5 +50,3 @@ var users_default = database.extend({
|
|
|
31
50
|
}
|
|
32
51
|
]
|
|
33
52
|
});
|
|
34
|
-
|
|
35
|
-
module.exports = users_default;
|
package/dist/server/index.js
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var server_exports = {};
|
|
29
|
+
__export(server_exports, {
|
|
30
|
+
default: () => import_server.default
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(server_exports);
|
|
33
|
+
var import_server = __toESM(require("./server"));
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var setCurrentRole_exports = {};
|
|
19
|
+
__export(setCurrentRole_exports, {
|
|
20
|
+
setCurrentRole: () => setCurrentRole
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(setCurrentRole_exports);
|
|
3
23
|
async function setCurrentRole(ctx, next) {
|
|
4
24
|
var _a, _b;
|
|
5
25
|
const currentRole = ctx.get("X-Role");
|
|
@@ -27,5 +47,7 @@ async function setCurrentRole(ctx, next) {
|
|
|
27
47
|
}
|
|
28
48
|
await next();
|
|
29
49
|
}
|
|
30
|
-
|
|
31
|
-
exports
|
|
50
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
51
|
+
0 && (module.exports = {
|
|
52
|
+
setCurrentRole
|
|
53
|
+
});
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var set_role_snippets_exports = {};
|
|
19
|
+
__export(set_role_snippets_exports, {
|
|
20
|
+
default: () => set_role_snippets_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(set_role_snippets_exports);
|
|
23
|
+
var import_server = require("@nocobase/server");
|
|
24
|
+
class set_role_snippets_default extends import_server.Migration {
|
|
6
25
|
async up() {
|
|
7
26
|
const result = await this.app.version.satisfies("<0.9.3-alpha.1");
|
|
8
27
|
if (!result) {
|
|
@@ -21,5 +40,3 @@ class set_role_snippets_default extends server.Migration {
|
|
|
21
40
|
async down() {
|
|
22
41
|
}
|
|
23
42
|
}
|
|
24
|
-
|
|
25
|
-
module.exports = set_role_snippets_default;
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var RoleModel_exports = {};
|
|
19
|
+
__export(RoleModel_exports, {
|
|
20
|
+
RoleModel: () => RoleModel
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(RoleModel_exports);
|
|
23
|
+
var import_database = require("@nocobase/database");
|
|
24
|
+
class RoleModel extends import_database.Model {
|
|
6
25
|
writeToAcl(options) {
|
|
7
26
|
const { acl } = options;
|
|
8
27
|
const roleName = this.get("name");
|
|
@@ -19,5 +38,7 @@ class RoleModel extends database.Model {
|
|
|
19
38
|
role.snippets = new Set(this.get("snippets"));
|
|
20
39
|
}
|
|
21
40
|
}
|
|
22
|
-
|
|
23
|
-
exports
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
RoleModel
|
|
44
|
+
});
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var RoleResourceActionModel_exports = {};
|
|
19
|
+
__export(RoleResourceActionModel_exports, {
|
|
20
|
+
RoleResourceActionModel: () => RoleResourceActionModel
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(RoleResourceActionModel_exports);
|
|
23
|
+
var import_database = require("@nocobase/database");
|
|
24
|
+
class RoleResourceActionModel extends import_database.Model {
|
|
6
25
|
async writeToACL(options) {
|
|
7
26
|
var _a;
|
|
8
27
|
const db = this.constructor.database;
|
|
@@ -60,5 +79,7 @@ class RoleResourceActionModel extends database.Model {
|
|
|
60
79
|
}
|
|
61
80
|
}
|
|
62
81
|
}
|
|
63
|
-
|
|
64
|
-
exports
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
RoleResourceActionModel
|
|
85
|
+
});
|
|
@@ -1,9 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var RoleResourceModel_exports = {};
|
|
19
|
+
__export(RoleResourceModel_exports, {
|
|
20
|
+
RoleResourceModel: () => RoleResourceModel
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(RoleResourceModel_exports);
|
|
23
|
+
var import_acl = require("@nocobase/acl");
|
|
24
|
+
var import_database = require("@nocobase/database");
|
|
25
|
+
class RoleResourceModel extends import_database.Model {
|
|
7
26
|
async revoke(options) {
|
|
8
27
|
const { role, resourceName, grantHelper } = options;
|
|
9
28
|
role.revokeResource(resourceName);
|
|
@@ -20,10 +39,10 @@ class RoleResourceModel extends database.Model {
|
|
|
20
39
|
grantHelper.resourceTargetActionMap.set(`${role.name}.${resourceName}`, []);
|
|
21
40
|
}
|
|
22
41
|
async writeToACL(options) {
|
|
23
|
-
const { acl
|
|
42
|
+
const { acl, associationFieldsActions, grantHelper } = options;
|
|
24
43
|
const resourceName = this.get("name");
|
|
25
44
|
const roleName = this.get("roleName");
|
|
26
|
-
const role = acl
|
|
45
|
+
const role = acl.getRole(roleName);
|
|
27
46
|
if (!role) {
|
|
28
47
|
console.log(`${roleName} role does not exist`);
|
|
29
48
|
return;
|
|
@@ -32,7 +51,7 @@ class RoleResourceModel extends database.Model {
|
|
|
32
51
|
if (this.usingActionsConfig === false) {
|
|
33
52
|
return;
|
|
34
53
|
}
|
|
35
|
-
const resource = new
|
|
54
|
+
const resource = new import_acl.ACLResource({
|
|
36
55
|
role,
|
|
37
56
|
name: resourceName
|
|
38
57
|
});
|
|
@@ -42,7 +61,7 @@ class RoleResourceModel extends database.Model {
|
|
|
42
61
|
});
|
|
43
62
|
for (const action of actions) {
|
|
44
63
|
await action.writeToACL({
|
|
45
|
-
acl
|
|
64
|
+
acl,
|
|
46
65
|
role,
|
|
47
66
|
resourceName,
|
|
48
67
|
associationFieldsActions,
|
|
@@ -51,5 +70,7 @@ class RoleResourceModel extends database.Model {
|
|
|
51
70
|
}
|
|
52
71
|
}
|
|
53
72
|
}
|
|
54
|
-
|
|
55
|
-
exports
|
|
73
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
74
|
+
0 && (module.exports = {
|
|
75
|
+
RoleResourceModel
|
|
76
|
+
});
|
package/dist/server/server.js
CHANGED
|
@@ -1,33 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var server_exports = {};
|
|
29
|
+
__export(server_exports, {
|
|
30
|
+
GrantHelper: () => GrantHelper,
|
|
31
|
+
PluginACL: () => PluginACL,
|
|
32
|
+
default: () => server_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(server_exports);
|
|
35
|
+
var import_acl = require("@nocobase/acl");
|
|
36
|
+
var import_actions = require("@nocobase/actions");
|
|
37
|
+
var import_database = require("@nocobase/database");
|
|
38
|
+
var import_server = require("@nocobase/server");
|
|
39
|
+
var import_lodash = __toESM(require("lodash"));
|
|
40
|
+
var import_path = require("path");
|
|
41
|
+
var import_available_actions = require("./actions/available-actions");
|
|
42
|
+
var import_role_check = require("./actions/role-check");
|
|
43
|
+
var import_role_collections = require("./actions/role-collections");
|
|
44
|
+
var import_user_setDefaultRole = require("./actions/user-setDefaultRole");
|
|
45
|
+
var import_setCurrentRole = require("./middlewares/setCurrentRole");
|
|
46
|
+
var import_RoleModel = require("./model/RoleModel");
|
|
47
|
+
var import_RoleResourceActionModel = require("./model/RoleResourceActionModel");
|
|
48
|
+
var import_RoleResourceModel = require("./model/RoleResourceModel");
|
|
49
|
+
var import_async_mutex = require("async-mutex");
|
|
24
50
|
class GrantHelper {
|
|
25
51
|
resourceTargetActionMap = /* @__PURE__ */ new Map();
|
|
26
52
|
targetActionResourceMap = /* @__PURE__ */ new Map();
|
|
27
53
|
constructor() {
|
|
28
54
|
}
|
|
29
55
|
}
|
|
30
|
-
class PluginACL extends
|
|
56
|
+
class PluginACL extends import_server.Plugin {
|
|
31
57
|
// association field actions config
|
|
32
58
|
associationFieldsActions = {};
|
|
33
59
|
grantHelper = new GrantHelper();
|
|
@@ -123,15 +149,15 @@ class PluginACL extends server.Plugin {
|
|
|
123
149
|
async beforeLoad() {
|
|
124
150
|
this.db.addMigrations({
|
|
125
151
|
namespace: this.name,
|
|
126
|
-
directory:
|
|
152
|
+
directory: (0, import_path.resolve)(__dirname, "./migrations"),
|
|
127
153
|
context: {
|
|
128
154
|
plugin: this
|
|
129
155
|
}
|
|
130
156
|
});
|
|
131
157
|
this.app.db.registerModels({
|
|
132
|
-
RoleResourceActionModel:
|
|
133
|
-
RoleResourceModel:
|
|
134
|
-
RoleModel:
|
|
158
|
+
RoleResourceActionModel: import_RoleResourceActionModel.RoleResourceActionModel,
|
|
159
|
+
RoleResourceModel: import_RoleResourceModel.RoleResourceModel,
|
|
160
|
+
RoleModel: import_RoleModel.RoleModel
|
|
135
161
|
});
|
|
136
162
|
this.app.acl.registerSnippet({
|
|
137
163
|
name: `pm.${this.name}.roles`,
|
|
@@ -158,20 +184,20 @@ class PluginACL extends server.Plugin {
|
|
|
158
184
|
if (actionName == "view" || actionName == "export") {
|
|
159
185
|
const associationsFields = fieldsParams.filter((fieldName) => {
|
|
160
186
|
const field = collection.getField(fieldName);
|
|
161
|
-
return field instanceof
|
|
187
|
+
return field instanceof import_database.RelationField;
|
|
162
188
|
});
|
|
163
189
|
ctx.params = {
|
|
164
190
|
...ctx.params,
|
|
165
|
-
fields:
|
|
191
|
+
fields: import_lodash.default.difference(fieldsParams, associationsFields),
|
|
166
192
|
appends: associationsFields
|
|
167
193
|
};
|
|
168
194
|
}
|
|
169
195
|
});
|
|
170
196
|
this.registerAssociationFieldsActions();
|
|
171
|
-
this.app.resourcer.define(
|
|
172
|
-
this.app.resourcer.define(
|
|
173
|
-
this.app.resourcer.registerActionHandler("roles:check",
|
|
174
|
-
this.app.resourcer.registerActionHandler(`users:setDefaultRole`,
|
|
197
|
+
this.app.resourcer.define(import_available_actions.availableActionResource);
|
|
198
|
+
this.app.resourcer.define(import_role_collections.roleCollectionsResource);
|
|
199
|
+
this.app.resourcer.registerActionHandler("roles:check", import_role_check.checkAction);
|
|
200
|
+
this.app.resourcer.registerActionHandler(`users:setDefaultRole`, import_user_setDefaultRole.setDefaultRole);
|
|
175
201
|
this.db.on("users.afterCreateWithAssociations", async (model, options) => {
|
|
176
202
|
const { transaction } = options;
|
|
177
203
|
const repository = this.app.db.getRepository("roles");
|
|
@@ -256,27 +282,30 @@ class PluginACL extends server.Plugin {
|
|
|
256
282
|
});
|
|
257
283
|
}
|
|
258
284
|
});
|
|
285
|
+
const mutex = new import_async_mutex.Mutex();
|
|
259
286
|
this.app.db.on("fields.afterDestroy", async (model, options) => {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
transaction: options.transaction
|
|
268
|
-
});
|
|
269
|
-
for (const resourceAction of resourceActions) {
|
|
270
|
-
const fields = resourceAction.get("fields");
|
|
271
|
-
const newFields = fields.filter((field) => field != fieldName);
|
|
272
|
-
await this.app.db.getRepository("rolesResourcesActions").update({
|
|
273
|
-
filterByTk: resourceAction.get("id"),
|
|
274
|
-
values: {
|
|
275
|
-
fields: newFields
|
|
287
|
+
await mutex.runExclusive(async () => {
|
|
288
|
+
const collectionName = model.get("collectionName");
|
|
289
|
+
const fieldName = model.get("name");
|
|
290
|
+
const resourceActions = await this.app.db.getRepository("rolesResourcesActions").find({
|
|
291
|
+
filter: {
|
|
292
|
+
"resource.name": collectionName,
|
|
293
|
+
"fields.$anyOf": [fieldName]
|
|
276
294
|
},
|
|
277
295
|
transaction: options.transaction
|
|
278
296
|
});
|
|
279
|
-
|
|
297
|
+
for (const resourceAction of resourceActions) {
|
|
298
|
+
const fields = resourceAction.get("fields");
|
|
299
|
+
const newFields = fields.filter((field) => field != fieldName);
|
|
300
|
+
await this.app.db.getRepository("rolesResourcesActions").update({
|
|
301
|
+
filterByTk: resourceAction.get("id"),
|
|
302
|
+
values: {
|
|
303
|
+
fields: newFields
|
|
304
|
+
},
|
|
305
|
+
transaction: options.transaction
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
});
|
|
280
309
|
});
|
|
281
310
|
const writeRolesToACL = async (app, options) => {
|
|
282
311
|
const exists = await this.app.db.collectionExistsInDb("roles");
|
|
@@ -358,7 +387,7 @@ class PluginACL extends server.Plugin {
|
|
|
358
387
|
]
|
|
359
388
|
});
|
|
360
389
|
});
|
|
361
|
-
this.app.resourcer.use(
|
|
390
|
+
this.app.resourcer.use(import_setCurrentRole.setCurrentRole, { tag: "setCurrentRole", before: "acl", after: "auth" });
|
|
362
391
|
this.app.acl.allow("users", "setDefaultRole", "loggedIn");
|
|
363
392
|
this.app.acl.allow("roles", "check", "loggedIn");
|
|
364
393
|
this.app.acl.allow("*", "*", (ctx) => {
|
|
@@ -435,6 +464,31 @@ class PluginACL extends server.Plugin {
|
|
|
435
464
|
return next();
|
|
436
465
|
});
|
|
437
466
|
const parseJsonTemplate = this.app.acl.parseJsonTemplate;
|
|
467
|
+
this.app.acl.beforeGrantAction(async (ctx) => {
|
|
468
|
+
const actionName = this.app.acl.resolveActionAlias(ctx.actionName);
|
|
469
|
+
if (import_lodash.default.isPlainObject(ctx.params)) {
|
|
470
|
+
if (actionName === "view" && ctx.params.fields) {
|
|
471
|
+
const appendFields = [];
|
|
472
|
+
const collection = this.app.db.getCollection(ctx.resourceName);
|
|
473
|
+
if (!collection) {
|
|
474
|
+
return;
|
|
475
|
+
}
|
|
476
|
+
if (collection.model.primaryKeyAttribute) {
|
|
477
|
+
appendFields.push(collection.model.primaryKeyAttribute);
|
|
478
|
+
}
|
|
479
|
+
if (collection.model.rawAttributes["createdAt"]) {
|
|
480
|
+
appendFields.push("createdAt");
|
|
481
|
+
}
|
|
482
|
+
if (collection.model.rawAttributes["updatedAt"]) {
|
|
483
|
+
appendFields.push("updatedAt");
|
|
484
|
+
}
|
|
485
|
+
ctx.params = {
|
|
486
|
+
...import_lodash.default.omit(ctx.params, "fields"),
|
|
487
|
+
fields: [...ctx.params.fields, ...appendFields]
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
});
|
|
438
492
|
this.app.acl.use(
|
|
439
493
|
async (ctx, next) => {
|
|
440
494
|
var _a, _b, _c, _d;
|
|
@@ -475,7 +529,7 @@ class PluginACL extends server.Plugin {
|
|
|
475
529
|
var _a, _b;
|
|
476
530
|
const action = (_b = (_a = ctx.permission) == null ? void 0 : _a.can) == null ? void 0 : _b.action;
|
|
477
531
|
if (action == "destroy" && !ctx.action.resourceName.includes(".")) {
|
|
478
|
-
const repository =
|
|
532
|
+
const repository = import_actions.utils.getRepositoryFromParams(ctx);
|
|
479
533
|
const filteredCount = await repository.count(ctx.permission.mergedParams);
|
|
480
534
|
const queryCount = await repository.count(ctx.permission.rawParams);
|
|
481
535
|
if (queryCount > filteredCount) {
|
|
@@ -507,9 +561,9 @@ class PluginACL extends server.Plugin {
|
|
|
507
561
|
const Model = collection.model;
|
|
508
562
|
const primaryKeyField = Model.primaryKeyField || Model.primaryKeyAttribute;
|
|
509
563
|
const dataPath = ((_a = ctx.body) == null ? void 0 : _a.rows) ? "body.rows" : "body";
|
|
510
|
-
let listData =
|
|
564
|
+
let listData = import_lodash.default.get(ctx, dataPath);
|
|
511
565
|
if (actionName == "get") {
|
|
512
|
-
listData =
|
|
566
|
+
listData = import_lodash.default.castArray(listData);
|
|
513
567
|
}
|
|
514
568
|
const inspectActions = ["view", "update", "destroy"];
|
|
515
569
|
const actionsParams = [];
|
|
@@ -540,13 +594,13 @@ class PluginACL extends server.Plugin {
|
|
|
540
594
|
},
|
|
541
595
|
permission: {},
|
|
542
596
|
throw(...args) {
|
|
543
|
-
throw new
|
|
597
|
+
throw new import_acl.NoPermissionError(...args);
|
|
544
598
|
}
|
|
545
599
|
};
|
|
546
600
|
try {
|
|
547
601
|
await this.app.acl.getActionParams(actionCtx);
|
|
548
602
|
} catch (e) {
|
|
549
|
-
if (e instanceof
|
|
603
|
+
if (e instanceof import_acl.NoPermissionError) {
|
|
550
604
|
continue;
|
|
551
605
|
}
|
|
552
606
|
throw e;
|
|
@@ -572,7 +626,7 @@ class PluginACL extends server.Plugin {
|
|
|
572
626
|
if (!params) {
|
|
573
627
|
continue;
|
|
574
628
|
}
|
|
575
|
-
if (
|
|
629
|
+
if (import_lodash.default.isEmpty(params) || import_lodash.default.isEmpty(params.filter)) {
|
|
576
630
|
allAllowed.push(action);
|
|
577
631
|
continue;
|
|
578
632
|
}
|
|
@@ -592,7 +646,7 @@ class PluginACL extends server.Plugin {
|
|
|
592
646
|
return key.startsWith("$") && key.endsWith("$");
|
|
593
647
|
};
|
|
594
648
|
const iterate = (rootObj, path = []) => {
|
|
595
|
-
const obj = path.length == 0 ? rootObj :
|
|
649
|
+
const obj = path.length == 0 ? rootObj : import_lodash.default.get(rootObj, path);
|
|
596
650
|
if (Array.isArray(obj)) {
|
|
597
651
|
for (let i = 0; i < obj.length; i++) {
|
|
598
652
|
if (obj[i] === null) {
|
|
@@ -611,16 +665,16 @@ class PluginACL extends server.Plugin {
|
|
|
611
665
|
if (typeof obj[key] === "object" && obj[key] !== null || typeof obj[key] === "symbol") {
|
|
612
666
|
iterate(rootObj, [...path, key]);
|
|
613
667
|
}
|
|
614
|
-
if (typeof key === "string" && key !==
|
|
668
|
+
if (typeof key === "string" && key !== (0, import_database.snakeCase)(key)) {
|
|
615
669
|
const setKey = isAssociationKey(key) ? (() => {
|
|
616
670
|
const parts = key.split(".");
|
|
617
|
-
parts[parts.length - 1] =
|
|
671
|
+
parts[parts.length - 1] = import_lodash.default.snakeCase(parts[parts.length - 1]);
|
|
618
672
|
const result = parts.join(".");
|
|
619
673
|
return result.endsWith("$") ? result : `${result}$`;
|
|
620
|
-
})() :
|
|
621
|
-
const setValue =
|
|
622
|
-
|
|
623
|
-
|
|
674
|
+
})() : (0, import_database.snakeCase)(key);
|
|
675
|
+
const setValue = import_lodash.default.cloneDeep(obj[key]);
|
|
676
|
+
import_lodash.default.unset(rootObj, [...path, key]);
|
|
677
|
+
import_lodash.default.set(rootObj, [...path, setKey], setValue);
|
|
624
678
|
}
|
|
625
679
|
});
|
|
626
680
|
};
|
|
@@ -688,7 +742,7 @@ class PluginACL extends server.Plugin {
|
|
|
688
742
|
}
|
|
689
743
|
}
|
|
690
744
|
async load() {
|
|
691
|
-
await this.importCollections(
|
|
745
|
+
await this.importCollections((0, import_path.resolve)(__dirname, "collections"));
|
|
692
746
|
this.db.extendCollection({
|
|
693
747
|
name: "rolesUischemas",
|
|
694
748
|
namespace: "acl.acl",
|
|
@@ -697,7 +751,8 @@ class PluginACL extends server.Plugin {
|
|
|
697
751
|
}
|
|
698
752
|
}
|
|
699
753
|
var server_default = PluginACL;
|
|
700
|
-
|
|
701
|
-
exports
|
|
702
|
-
|
|
703
|
-
|
|
754
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
755
|
+
0 && (module.exports = {
|
|
756
|
+
GrantHelper,
|
|
757
|
+
PluginACL
|
|
758
|
+
});
|
package/dist/swagger/index.js
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var swagger_exports = {};
|
|
19
|
+
__export(swagger_exports, {
|
|
20
|
+
default: () => swagger_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(swagger_exports);
|
|
3
23
|
var swagger_default = {
|
|
4
24
|
openapi: "3.0.2",
|
|
5
25
|
info: {
|
|
@@ -373,5 +393,3 @@ var swagger_default = {
|
|
|
373
393
|
}
|
|
374
394
|
}
|
|
375
395
|
};
|
|
376
|
-
|
|
377
|
-
module.exports = swagger_default;
|
package/package.json
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
"displayName.zh-CN": "权限控制",
|
|
5
5
|
"description": "A simple access control based on roles, resources and actions",
|
|
6
6
|
"description.zh-CN": "基于角色、资源和操作的权限控制。",
|
|
7
|
-
"version": "0.13.0-alpha.
|
|
7
|
+
"version": "0.13.0-alpha.5",
|
|
8
8
|
"license": "AGPL-3.0",
|
|
9
9
|
"main": "./dist/server/index.js",
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@types/jsonwebtoken": "^8.5.8",
|
|
12
|
+
"async-mutex": "^0.4.0",
|
|
12
13
|
"jsonwebtoken": "^8.5.1",
|
|
13
14
|
"react": "^18.2.0",
|
|
14
15
|
"react-dom": "^18.2.0"
|
|
@@ -27,5 +28,5 @@
|
|
|
27
28
|
"url": "git+https://github.com/nocobase/nocobase.git",
|
|
28
29
|
"directory": "packages/plugins/acl"
|
|
29
30
|
},
|
|
30
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "9eabe607b4a20c356fdb2fd95e40fa476986dcb0"
|
|
31
32
|
}
|