@objectstack/plugin-sharing 9.8.0 → 9.9.1
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/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +31 -0
- package/dist/index.d.mts +50 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +23 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/sharing-plugin.ts +30 -26
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@objectstack/plugin-sharing",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.9.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@objectstack/core": "9.
|
|
17
|
-
"@objectstack/objectql": "9.
|
|
18
|
-
"@objectstack/platform-objects": "9.
|
|
19
|
-
"@objectstack/spec": "9.
|
|
16
|
+
"@objectstack/core": "9.9.1",
|
|
17
|
+
"@objectstack/objectql": "9.9.1",
|
|
18
|
+
"@objectstack/platform-objects": "9.9.1",
|
|
19
|
+
"@objectstack/spec": "9.9.1"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/node": "^25.9.3",
|
package/src/sharing-plugin.ts
CHANGED
|
@@ -139,37 +139,41 @@ export class SharingServicePlugin implements Plugin {
|
|
|
139
139
|
});
|
|
140
140
|
ctx.registerService('sharing', this.service);
|
|
141
141
|
|
|
142
|
+
// Enforcement (read-filter middleware + sharing-rule hooks) is opt-out
|
|
143
|
+
// via `enforce: false`. The share-link service below is registered
|
|
144
|
+
// REGARDLESS — capability-token sharing does not depend on principal-
|
|
145
|
+
// based RLS enforcement, and multi-tenant hosts mount this plugin purely
|
|
146
|
+
// for the `shareLinks` service (per-env enforcement is applied elsewhere).
|
|
142
147
|
if (this.options.enforce === false) {
|
|
143
|
-
ctx.logger.info('SharingServicePlugin: enforcement disabled (enforce=false)');
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const mw = buildSharingMiddleware(this.service);
|
|
148
|
-
if (typeof engine.registerMiddleware === 'function') {
|
|
149
|
-
engine.registerMiddleware(mw, { object: '*' });
|
|
150
|
-
ctx.logger.info('SharingServicePlugin: enforcement middleware installed');
|
|
148
|
+
ctx.logger.info('SharingServicePlugin: enforcement disabled (enforce=false) — share-link service still registered');
|
|
151
149
|
} else {
|
|
152
|
-
|
|
153
|
-
|
|
150
|
+
const mw = buildSharingMiddleware(this.service);
|
|
151
|
+
if (typeof engine.registerMiddleware === 'function') {
|
|
152
|
+
engine.registerMiddleware(mw, { object: '*' });
|
|
153
|
+
ctx.logger.info('SharingServicePlugin: enforcement middleware installed');
|
|
154
|
+
} else {
|
|
155
|
+
ctx.logger.warn('SharingServicePlugin: engine has no registerMiddleware — enforcement not applied');
|
|
156
|
+
}
|
|
154
157
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
158
|
+
// Rule evaluator + hot-rebindable lifecycle hooks.
|
|
159
|
+
try {
|
|
160
|
+
this.ruleService = new SharingRuleService({
|
|
161
|
+
engine: engine as SharingEngine,
|
|
162
|
+
sharing: this.service,
|
|
163
|
+
logger: ctx.logger as any,
|
|
164
|
+
});
|
|
165
|
+
ctx.registerService('sharingRules', this.ruleService);
|
|
163
166
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
if (typeof engine.registerHook === 'function' && typeof engine.unregisterHooksByPackage === 'function') {
|
|
168
|
+
const rules = await this.ruleService.listRules({ activeOnly: true }, { isSystem: true } as any);
|
|
169
|
+
unbindAllRuleHooks(engine);
|
|
170
|
+
bindRuleHooks(engine, this.ruleService, rules, ctx.logger as any);
|
|
171
|
+
} else {
|
|
172
|
+
ctx.logger.warn('SharingServicePlugin: engine has no hook API — sharing rule auto-evaluation disabled');
|
|
173
|
+
}
|
|
174
|
+
} catch (err: any) {
|
|
175
|
+
ctx.logger.warn('SharingServicePlugin: sharing-rule subsystem not started', { error: err?.message });
|
|
170
176
|
}
|
|
171
|
-
} catch (err: any) {
|
|
172
|
-
ctx.logger.warn('SharingServicePlugin: sharing-rule subsystem not started', { error: err?.message });
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
// ── Share-Link service (capability tokens) ────────────────
|