nodejs-store 2.7.0 → 3.0.0
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/package.json +2 -2
- package/src/index.js +13 -0
- package/src/permission.js +17 -0
- package/src/schema.js +18 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nodejs-store",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Multi-backend data layer for Node.js (MongoDB, MySQL, SQLite, PostgreSQL): pure JSON schemas, GQL tree queries compiled to a single native query, GROUP BY/HAVING aggregation, computed columns, soft-delete and role-based access control",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"files": [
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"mongodb": "^6.21.0",
|
|
66
66
|
"mysql2": "^3.24.4",
|
|
67
67
|
"pg": "^8.23.0",
|
|
68
|
-
"rust-store-node": "^
|
|
68
|
+
"rust-store-node": "^3.0.0"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@eslint/js": "^9.39.2",
|
package/src/index.js
CHANGED
|
@@ -344,6 +344,19 @@ class Store {
|
|
|
344
344
|
rbacRowCondition(model, action, ctx) {
|
|
345
345
|
return permission.rbacRowCondition(model, action, ctx);
|
|
346
346
|
}
|
|
347
|
+
|
|
348
|
+
// ── 角色清单与未配置姿态(清单化语义,判决唯一在 core;本层仅透传配置) ──
|
|
349
|
+
setExemptRoles(roles) {
|
|
350
|
+
return permission.setExemptRoles(roles);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
setDenyWriteRoles(roles) {
|
|
354
|
+
return permission.setDenyWriteRoles(roles);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
setUnconfiguredPolicy(policy) {
|
|
358
|
+
return permission.setUnconfiguredPolicy(policy);
|
|
359
|
+
}
|
|
347
360
|
}
|
|
348
361
|
|
|
349
362
|
/** 自定义权限错误(实例可被 store.PermissionError 捕获) */
|
package/src/permission.js
CHANGED
|
@@ -133,6 +133,20 @@ function rbacRowCondition(model, action, ctx) {
|
|
|
133
133
|
return core.rbacRowCondition(_model(model), action, ctx ?? null);
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
// ── 角色清单与未配置姿态(清单化语义,判决唯一在 core;本层仅透传) ──
|
|
137
|
+
|
|
138
|
+
function setExemptRoles(roles) {
|
|
139
|
+
return core.setExemptRoles(roles);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function setDenyWriteRoles(roles) {
|
|
143
|
+
return core.setDenyWriteRoles(roles);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
function setUnconfiguredPolicy(policy) {
|
|
147
|
+
return core.setUnconfiguredPolicy(policy);
|
|
148
|
+
}
|
|
149
|
+
|
|
136
150
|
// ─── 自定义错误 ──────────────────────────────────────────────
|
|
137
151
|
|
|
138
152
|
class PermissionError extends Error {
|
|
@@ -165,5 +179,8 @@ module.exports = {
|
|
|
165
179
|
rbacReadableFields,
|
|
166
180
|
rbacWritableFields,
|
|
167
181
|
rbacRowCondition,
|
|
182
|
+
setExemptRoles,
|
|
183
|
+
setDenyWriteRoles,
|
|
184
|
+
setUnconfiguredPolicy,
|
|
168
185
|
PermissionError,
|
|
169
186
|
};
|
package/src/schema.js
CHANGED
|
@@ -127,6 +127,21 @@ function setRequireContext(needCtx = true) {
|
|
|
127
127
|
core.setRequireContext(Boolean(needCtx));
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/** 豁免角色清单(命中者在一切判决环节直接放行)。默认空——无豁免(清单化语义) */
|
|
131
|
+
function setExemptRoles(roles) {
|
|
132
|
+
core.setExemptRoles(roles);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** 拒写角色清单(命中者一切写路径拒绝,读不受影响)。默认空——无拒写 */
|
|
136
|
+
function setDenyWriteRoles(roles) {
|
|
137
|
+
core.setDenyWriteRoles(roles);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** schema 白名单缺失/为空时的默认姿态:'open'(默认,放行)| 'closed'(全拒) */
|
|
141
|
+
function setUnconfiguredPolicy(policy) {
|
|
142
|
+
core.setUnconfiguredPolicy(policy);
|
|
143
|
+
}
|
|
144
|
+
|
|
130
145
|
/** 「上下文强制」开关当前值(对齐 py_store.schema.require_context) */
|
|
131
146
|
function requireContext() {
|
|
132
147
|
return core.requireContext();
|
|
@@ -160,6 +175,9 @@ module.exports = {
|
|
|
160
175
|
list,
|
|
161
176
|
setRequireContext,
|
|
162
177
|
requireContext,
|
|
178
|
+
setExemptRoles,
|
|
179
|
+
setDenyWriteRoles,
|
|
180
|
+
setUnconfiguredPolicy,
|
|
163
181
|
setProfile,
|
|
164
182
|
getProfile,
|
|
165
183
|
getAsyncFn,
|