@xemahq/org-erasure-nest 1.0.1 → 2.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/README.md +3 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/org-erasure-contract.d.ts +6 -0
- package/dist/lib/org-erasure-contract.d.ts.map +1 -1
- package/dist/lib/org-erasure-contract.js +13 -1
- package/dist/lib/org-erasure-contract.js.map +1 -1
- package/dist/lib/org-erasure-endpoint.module.d.ts +1 -1
- package/dist/lib/org-erasure-endpoint.module.d.ts.map +1 -1
- package/dist/lib/org-erasure-endpoint.module.js +11 -5
- package/dist/lib/org-erasure-endpoint.module.js.map +1 -1
- package/dist/lib/org-protection.d.ts +9 -3
- package/dist/lib/org-protection.d.ts.map +1 -1
- package/dist/lib/org-protection.js +26 -14
- package/dist/lib/org-protection.js.map +1 -1
- package/package.json +13 -10
package/README.md
CHANGED
|
@@ -37,7 +37,9 @@ This package is the participant half of that contract, and nothing else:
|
|
|
37
37
|
|
|
38
38
|
- the two protocol strings — the capability a participant declares, and the
|
|
39
39
|
route path the orchestrator POSTs to;
|
|
40
|
-
- `OrgErasureController`, the route, behind **two independent fences**;
|
|
40
|
+
- `OrgErasureController`, the route, behind **two independent fences**; it is
|
|
41
|
+
reached by the `org-erasure` platform sweep only (`ORG_ERASURE_SWEEP`,
|
|
42
|
+
`orgErasureSweepGrant(orgId)`), never by the erase sweep;
|
|
41
43
|
- `OrgProtectionGuard` and its identity probe, which answer *may this
|
|
42
44
|
organisation be destroyed at all?* and fail **closed** on every uncertainty;
|
|
43
45
|
- `OrgErasureEndpointModule.forRunner(...)`, which mounts the route over an
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ORG_DATA_ERASURE_CAPABILITY, ORG_ERASURE_ROUTE_PATH, ORG_ERASURE_RUNNER, type OrgErasureReport, type OrgErasureRunner, } from './lib/org-erasure-contract';
|
|
1
|
+
export { APP_ERASURE_SWEEP, appErasureSweepGrant, ORG_DATA_ERASURE_CAPABILITY, ORG_ERASURE_OPERATION, ORG_ERASURE_ROUTE_PATH, ORG_ERASURE_RUNNER, ORG_ERASURE_SWEEP, orgErasureSweepGrant, type OrgErasureReport, type OrgErasureRunner, } from './lib/org-erasure-contract';
|
|
2
2
|
export { OrgErasureController, OrgErasureEndpointModule, type OrgErasureEndpointModuleOptions, } from './lib/org-erasure-endpoint.module';
|
|
3
|
-
export { assertOrgNotProtected, assertOrgProtectionArmable, IdentityOrgProtectionProbe, IDENTITY_SERVICE_NAME, ORGANIZATION_PROTECTED_ERROR_CODE, OrgProtectionGuard, OrgProtectionUnavailableError, ProtectedOrgErasureRefusedError, type OrgProtectionProbe, } from './lib/org-protection';
|
|
3
|
+
export { assertOrgNotProtected, assertOrgProtectionArmable, IdentityOrgProtectionProbe, IDENTITY_SERVICE_NAME, ORG_PROTECTION_GRANT, ORGANIZATION_PROTECTED_ERROR_CODE, OrgProtectionGuard, OrgProtectionUnavailableError, ProtectedOrgErasureRefusedError, type OrgProtectionGrant, type OrgProtectionProbe, } from './lib/org-protection';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,iCAAiC,EACjC,kBAAkB,EAClB,6BAA6B,EAC7B,+BAA+B,EAC/B,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,KAAK,+BAA+B,GACrC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,iCAAiC,EACjC,kBAAkB,EAClB,6BAA6B,EAC7B,+BAA+B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProtectedOrgErasureRefusedError = exports.OrgProtectionUnavailableError = exports.OrgProtectionGuard = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.IDENTITY_SERVICE_NAME = exports.IdentityOrgProtectionProbe = exports.assertOrgProtectionArmable = exports.assertOrgNotProtected = exports.OrgErasureEndpointModule = exports.OrgErasureController = exports.ORG_ERASURE_RUNNER = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = void 0;
|
|
3
|
+
exports.ProtectedOrgErasureRefusedError = exports.OrgProtectionUnavailableError = exports.OrgProtectionGuard = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.ORG_PROTECTION_GRANT = exports.IDENTITY_SERVICE_NAME = exports.IdentityOrgProtectionProbe = exports.assertOrgProtectionArmable = exports.assertOrgNotProtected = exports.OrgErasureEndpointModule = exports.OrgErasureController = exports.orgErasureSweepGrant = exports.ORG_ERASURE_SWEEP = exports.ORG_ERASURE_RUNNER = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_ERASURE_OPERATION = exports.ORG_DATA_ERASURE_CAPABILITY = exports.appErasureSweepGrant = exports.APP_ERASURE_SWEEP = void 0;
|
|
4
4
|
var org_erasure_contract_1 = require("./lib/org-erasure-contract");
|
|
5
|
+
Object.defineProperty(exports, "APP_ERASURE_SWEEP", { enumerable: true, get: function () { return org_erasure_contract_1.APP_ERASURE_SWEEP; } });
|
|
6
|
+
Object.defineProperty(exports, "appErasureSweepGrant", { enumerable: true, get: function () { return org_erasure_contract_1.appErasureSweepGrant; } });
|
|
5
7
|
Object.defineProperty(exports, "ORG_DATA_ERASURE_CAPABILITY", { enumerable: true, get: function () { return org_erasure_contract_1.ORG_DATA_ERASURE_CAPABILITY; } });
|
|
8
|
+
Object.defineProperty(exports, "ORG_ERASURE_OPERATION", { enumerable: true, get: function () { return org_erasure_contract_1.ORG_ERASURE_OPERATION; } });
|
|
6
9
|
Object.defineProperty(exports, "ORG_ERASURE_ROUTE_PATH", { enumerable: true, get: function () { return org_erasure_contract_1.ORG_ERASURE_ROUTE_PATH; } });
|
|
7
10
|
Object.defineProperty(exports, "ORG_ERASURE_RUNNER", { enumerable: true, get: function () { return org_erasure_contract_1.ORG_ERASURE_RUNNER; } });
|
|
11
|
+
Object.defineProperty(exports, "ORG_ERASURE_SWEEP", { enumerable: true, get: function () { return org_erasure_contract_1.ORG_ERASURE_SWEEP; } });
|
|
12
|
+
Object.defineProperty(exports, "orgErasureSweepGrant", { enumerable: true, get: function () { return org_erasure_contract_1.orgErasureSweepGrant; } });
|
|
8
13
|
var org_erasure_endpoint_module_1 = require("./lib/org-erasure-endpoint.module");
|
|
9
14
|
Object.defineProperty(exports, "OrgErasureController", { enumerable: true, get: function () { return org_erasure_endpoint_module_1.OrgErasureController; } });
|
|
10
15
|
Object.defineProperty(exports, "OrgErasureEndpointModule", { enumerable: true, get: function () { return org_erasure_endpoint_module_1.OrgErasureEndpointModule; } });
|
|
@@ -13,6 +18,7 @@ Object.defineProperty(exports, "assertOrgNotProtected", { enumerable: true, get:
|
|
|
13
18
|
Object.defineProperty(exports, "assertOrgProtectionArmable", { enumerable: true, get: function () { return org_protection_1.assertOrgProtectionArmable; } });
|
|
14
19
|
Object.defineProperty(exports, "IdentityOrgProtectionProbe", { enumerable: true, get: function () { return org_protection_1.IdentityOrgProtectionProbe; } });
|
|
15
20
|
Object.defineProperty(exports, "IDENTITY_SERVICE_NAME", { enumerable: true, get: function () { return org_protection_1.IDENTITY_SERVICE_NAME; } });
|
|
21
|
+
Object.defineProperty(exports, "ORG_PROTECTION_GRANT", { enumerable: true, get: function () { return org_protection_1.ORG_PROTECTION_GRANT; } });
|
|
16
22
|
Object.defineProperty(exports, "ORGANIZATION_PROTECTED_ERROR_CODE", { enumerable: true, get: function () { return org_protection_1.ORGANIZATION_PROTECTED_ERROR_CODE; } });
|
|
17
23
|
Object.defineProperty(exports, "OrgProtectionGuard", { enumerable: true, get: function () { return org_protection_1.OrgProtectionGuard; } });
|
|
18
24
|
Object.defineProperty(exports, "OrgProtectionUnavailableError", { enumerable: true, get: function () { return org_protection_1.OrgProtectionUnavailableError; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mEAWoC;AAVlC,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AACpB,mIAAA,2BAA2B,OAAA;AAC3B,6HAAA,qBAAqB,OAAA;AACrB,8HAAA,sBAAsB,OAAA;AACtB,0HAAA,kBAAkB,OAAA;AAClB,yHAAA,iBAAiB,OAAA;AACjB,4HAAA,oBAAoB,OAAA;AAItB,iFAI2C;AAHzC,mIAAA,oBAAoB,OAAA;AACpB,uIAAA,wBAAwB,OAAA;AAG1B,uDAY8B;AAX5B,uHAAA,qBAAqB,OAAA;AACrB,4HAAA,0BAA0B,OAAA;AAC1B,4HAAA,0BAA0B,OAAA;AAC1B,uHAAA,qBAAqB,OAAA;AACrB,sHAAA,oBAAoB,OAAA;AACpB,mIAAA,iCAAiC,OAAA;AACjC,oHAAA,kBAAkB,OAAA;AAClB,+HAAA,6BAA6B,OAAA;AAC7B,iIAAA,+BAA+B,OAAA"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import { PlatformSweep, type PlatformSweepGrant } from '@xemahq/platform-common';
|
|
1
2
|
export declare const ORG_DATA_ERASURE_CAPABILITY = "xema.org-data-erasure";
|
|
2
3
|
export declare const ORG_ERASURE_ROUTE_PATH = "internal/org-erasure";
|
|
4
|
+
export declare const ORG_ERASURE_OPERATION = "org-data:erase@1";
|
|
5
|
+
export declare const ORG_ERASURE_SWEEP = PlatformSweep.OrgErasure;
|
|
6
|
+
export declare function orgErasureSweepGrant(orgId: string): PlatformSweepGrant;
|
|
7
|
+
export declare const APP_ERASURE_SWEEP = PlatformSweep.AppErasure;
|
|
8
|
+
export declare function appErasureSweepGrant(orgId: string): PlatformSweepGrant;
|
|
3
9
|
export declare const ORG_ERASURE_RUNNER: unique symbol;
|
|
4
10
|
export interface OrgErasureReport {
|
|
5
11
|
readonly orgId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure-contract.d.ts","sourceRoot":"","sources":["../../src/lib/org-erasure-contract.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"org-erasure-contract.d.ts","sourceRoot":"","sources":["../../src/lib/org-erasure-contract.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,aAAa,EAEb,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AAGnE,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAM7D,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAQxD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAG1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAEtE;AAOD,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAG1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAEtE;AAGD,eAAO,MAAM,kBAAkB,eAE9B,CAAC;AAUF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAYD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjD"}
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ORG_ERASURE_RUNNER = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = void 0;
|
|
3
|
+
exports.ORG_ERASURE_RUNNER = exports.APP_ERASURE_SWEEP = exports.ORG_ERASURE_SWEEP = exports.ORG_ERASURE_OPERATION = exports.ORG_ERASURE_ROUTE_PATH = exports.ORG_DATA_ERASURE_CAPABILITY = void 0;
|
|
4
|
+
exports.orgErasureSweepGrant = orgErasureSweepGrant;
|
|
5
|
+
exports.appErasureSweepGrant = appErasureSweepGrant;
|
|
6
|
+
const platform_common_1 = require("@xemahq/platform-common");
|
|
4
7
|
exports.ORG_DATA_ERASURE_CAPABILITY = 'xema.org-data-erasure';
|
|
5
8
|
exports.ORG_ERASURE_ROUTE_PATH = 'internal/org-erasure';
|
|
9
|
+
exports.ORG_ERASURE_OPERATION = 'org-data:erase@1';
|
|
10
|
+
exports.ORG_ERASURE_SWEEP = platform_common_1.PlatformSweep.OrgErasure;
|
|
11
|
+
function orgErasureSweepGrant(orgId) {
|
|
12
|
+
return (0, platform_common_1.platformSweepGrant)(platform_common_1.PlatformSweep.OrgErasure, orgId);
|
|
13
|
+
}
|
|
14
|
+
exports.APP_ERASURE_SWEEP = platform_common_1.PlatformSweep.AppErasure;
|
|
15
|
+
function appErasureSweepGrant(orgId) {
|
|
16
|
+
return (0, platform_common_1.platformSweepGrant)(platform_common_1.PlatformSweep.AppErasure, orgId);
|
|
17
|
+
}
|
|
6
18
|
exports.ORG_ERASURE_RUNNER = Symbol.for('@xemahq/org-erasure-nest/org-erasure-runner');
|
|
7
19
|
//# sourceMappingURL=org-erasure-contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure-contract.js","sourceRoot":"","sources":["../../src/lib/org-erasure-contract.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"org-erasure-contract.js","sourceRoot":"","sources":["../../src/lib/org-erasure-contract.ts"],"names":[],"mappings":";;;AAoDA,oDAEC;AAUD,oDAEC;AA9CD,6DAIiC;AAQpB,QAAA,2BAA2B,GAAG,uBAAuB,CAAC;AAGtD,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAMhD,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAQ3C,QAAA,iBAAiB,GAAG,+BAAa,CAAC,UAAU,CAAC;AAG1D,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,IAAA,oCAAkB,EAAC,+BAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAOY,QAAA,iBAAiB,GAAG,+BAAa,CAAC,UAAU,CAAC;AAG1D,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,IAAA,oCAAkB,EAAC,+BAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAGY,QAAA,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAC1C,6CAA6C,CAC9C,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { type OrgErasureReport, type OrgErasureRunner } from './org-erasure-cont
|
|
|
3
3
|
export declare class OrgErasureController {
|
|
4
4
|
private readonly runner;
|
|
5
5
|
constructor(runner: OrgErasureRunner);
|
|
6
|
-
erase(
|
|
6
|
+
erase(request: object): Promise<OrgErasureReport>;
|
|
7
7
|
}
|
|
8
8
|
export interface OrgErasureEndpointModuleOptions {
|
|
9
9
|
readonly useFactory: (...args: never[]) => OrgErasureRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure-endpoint.module.d.ts","sourceRoot":"","sources":["../../src/lib/org-erasure-endpoint.module.ts"],"names":[],"mappings":"AAwCA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"org-erasure-endpoint.module.d.ts","sourceRoot":"","sources":["../../src/lib/org-erasure-endpoint.module.ts"],"names":[],"mappings":"AAwCA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAC;AASxB,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,qBAEa,oBAAoB;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,gBAAgB;IAkBvE,KAAK,CAAQ,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAGzD;AAGD,MAAM,WAAW,+BAA+B;IAQ9C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,gBAAgB,CAAC;IAE5D,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,yBAAyB,CAAC,EAAE,CAAC;IAE1E,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAEzC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CAC7C;AAwBD,qBAAa,wBAAwB;IACnC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,+BAA+B,GAAG,aAAa;CAe1E"}
|
|
@@ -24,25 +24,31 @@ let OrgErasureController = class OrgErasureController {
|
|
|
24
24
|
constructor(runner) {
|
|
25
25
|
this.runner = runner;
|
|
26
26
|
}
|
|
27
|
-
erase(
|
|
28
|
-
return this.runner.erase(
|
|
27
|
+
erase(request) {
|
|
28
|
+
return this.runner.erase((0, platform_common_1.admittedOrgIdOf)((0, platform_common_1.orgAuthorityAdmissionOf)(request)));
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
exports.OrgErasureController = OrgErasureController;
|
|
32
32
|
__decorate([
|
|
33
33
|
(0, xema_decorators_1.XemaInternalRoute)({ audience: xema_decorators_1.InternalRouteAudience.Service }),
|
|
34
|
+
(0, common_1.UseGuards)(org_protection_1.OrgProtectionGuard),
|
|
35
|
+
(0, xema_decorators_1.OrgAuthorityRoute)({
|
|
36
|
+
operation: org_erasure_contract_1.ORG_ERASURE_OPERATION,
|
|
37
|
+
org: { path: ['orgId'] },
|
|
38
|
+
sweeps: true,
|
|
39
|
+
}),
|
|
34
40
|
(0, common_1.Post)(':orgId'),
|
|
41
|
+
(0, swagger_1.ApiParam)({ name: 'orgId', type: String }),
|
|
35
42
|
(0, swagger_1.ApiOperation)({
|
|
36
43
|
summary: "Erase every row belonging to an org across this service's org-scoped models",
|
|
37
44
|
}),
|
|
38
|
-
__param(0, (0, common_1.
|
|
45
|
+
__param(0, (0, common_1.Req)()),
|
|
39
46
|
__metadata("design:type", Function),
|
|
40
|
-
__metadata("design:paramtypes", [
|
|
47
|
+
__metadata("design:paramtypes", [Object]),
|
|
41
48
|
__metadata("design:returntype", Promise)
|
|
42
49
|
], OrgErasureController.prototype, "erase", null);
|
|
43
50
|
exports.OrgErasureController = OrgErasureController = __decorate([
|
|
44
51
|
(0, swagger_1.ApiTags)('org-erasure'),
|
|
45
|
-
(0, common_1.UseGuards)(platform_common_1.ServiceActorGuard, org_protection_1.OrgProtectionGuard),
|
|
46
52
|
(0, common_1.Controller)('internal/org-erasure'),
|
|
47
53
|
__param(0, (0, common_1.Inject)(org_erasure_contract_1.ORG_ERASURE_RUNNER)),
|
|
48
54
|
__metadata("design:paramtypes", [Object])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-erasure-endpoint.module.js","sourceRoot":"","sources":["../../src/lib/org-erasure-endpoint.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwCA,2CAUwB;AACxB,
|
|
1
|
+
{"version":3,"file":"org-erasure-endpoint.module.js","sourceRoot":"","sources":["../../src/lib/org-erasure-endpoint.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwCA,2CAUwB;AACxB,6CAAkE;AAClE,6DAAmF;AACnF,6DAIiC;AAEjC,iEAKgC;AAChC,qDAAsD;AAI/C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAEgB;IAD/C,YAC+C,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IACpE,CAAC;IAiBJ,KAAK,CAAQ,OAAe;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,iCAAe,EAAC,IAAA,yCAAuB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAvBY,oDAAoB;AAoB/B;IAfC,IAAA,mCAAiB,EAAC,EAAE,QAAQ,EAAE,uCAAqB,CAAC,OAAO,EAAE,CAAC;IAG9D,IAAA,kBAAS,EAAC,mCAAkB,CAAC;IAC7B,IAAA,mCAAiB,EAAC;QACjB,SAAS,EAAE,4CAAqB;QAChC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;QACxB,MAAM,EAAE,IAAI;KACb,CAAC;IACD,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzC,IAAA,sBAAY,EAAC;QACZ,OAAO,EACL,6EAA6E;KAChF,CAAC;IACK,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAEX;+BAtBU,oBAAoB;IAFhC,IAAA,iBAAO,EAAC,aAAa,CAAC;IACtB,IAAA,mBAAU,EAAC,sBAAsB,CAAC;IAG9B,WAAA,IAAA,eAAM,EAAC,yCAAkB,CAAC,CAAA;;GAFlB,oBAAoB,CAuBhC;AA0CD,MAAa,wBAAwB;IACnC,MAAM,CAAC,SAAS,CAAC,OAAwC;QACvD,OAAO;YACL,MAAM,EAAE,wBAAwB;YAChC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACtE,WAAW,EAAE,CAAC,oBAAoB,CAAC;YACnC,SAAS,EAAE;gBACT,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC5B;oBACE,OAAO,EAAE,yCAAkB;oBAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;iBACzE;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAhBD,4DAgBC"}
|
|
@@ -2,6 +2,11 @@ import { ForbiddenException, ServiceUnavailableException, type CanActivate, type
|
|
|
2
2
|
import { IdentityBootstrapService } from '@xemahq/identity-client';
|
|
3
3
|
import type { ServiceRegistry } from '@xemahq/contracts/service-registry';
|
|
4
4
|
export declare const IDENTITY_SERVICE_NAME = "identity-api";
|
|
5
|
+
export declare const ORG_PROTECTION_GRANT: unique symbol;
|
|
6
|
+
export interface OrgProtectionGrant {
|
|
7
|
+
readonly operation: string;
|
|
8
|
+
getAccessToken(): Promise<string>;
|
|
9
|
+
}
|
|
5
10
|
export declare const ORGANIZATION_PROTECTED_ERROR_CODE = "ORGANIZATION_PROTECTED";
|
|
6
11
|
export interface OrgProtectionProbe {
|
|
7
12
|
isOrgProtected(orgId: string): Promise<boolean>;
|
|
@@ -19,15 +24,16 @@ export declare function assertOrgNotProtected(probe: OrgProtectionProbe, orgId:
|
|
|
19
24
|
export declare class IdentityOrgProtectionProbe implements OrgProtectionProbe {
|
|
20
25
|
private readonly registry;
|
|
21
26
|
private readonly identity;
|
|
27
|
+
private readonly grant;
|
|
22
28
|
private readonly logger;
|
|
23
|
-
constructor(registry: ServiceRegistry, identity: IdentityBootstrapService);
|
|
29
|
+
constructor(registry: ServiceRegistry, identity: IdentityBootstrapService, grant: OrgProtectionGrant);
|
|
24
30
|
isOrgProtected(orgId: string): Promise<boolean>;
|
|
25
31
|
private fetchOrganization;
|
|
26
32
|
}
|
|
27
|
-
export declare function assertOrgProtectionArmable(registry: ServiceRegistry | null | undefined, identity: IdentityBootstrapService | null | undefined): asserts registry is ServiceRegistry;
|
|
33
|
+
export declare function assertOrgProtectionArmable(registry: ServiceRegistry | null | undefined, identity: IdentityBootstrapService | null | undefined, grant: OrgProtectionGrant | null | undefined): asserts registry is ServiceRegistry;
|
|
28
34
|
export declare class OrgProtectionGuard implements CanActivate {
|
|
29
35
|
private readonly probe;
|
|
30
|
-
constructor(registry: ServiceRegistry | null, identity: IdentityBootstrapService | null);
|
|
36
|
+
constructor(registry: ServiceRegistry | null, identity: IdentityBootstrapService | null, grant: OrgProtectionGrant | null);
|
|
31
37
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
32
38
|
}
|
|
33
39
|
//# sourceMappingURL=org-protection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-protection.d.ts","sourceRoot":"","sources":["../../src/lib/org-protection.ts"],"names":[],"mappings":"AA8CA,OAAO,EACL,kBAAkB,EAKlB,2BAA2B,EAC3B,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAOnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"org-protection.d.ts","sourceRoot":"","sources":["../../src/lib/org-protection.ts"],"names":[],"mappings":"AA8CA,OAAO,EACL,kBAAkB,EAKlB,2BAA2B,EAC3B,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAOnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAG1E,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AAQpD,eAAO,MAAM,oBAAoB,eAEhC,CAAC;AASF,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAGD,eAAO,MAAM,iCAAiC,2BAA2B,CAAC;AAO1E,MAAM,WAAW,kBAAkB;IAMjC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAGD,qBAAa,+BAAgC,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CASnC;AAMD,qBAAa,6BAA8B,SAAQ,2BAA2B;IAE1E,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM;CAW1B;AAQD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAsBf;AAaD,qBACa,0BAA2B,YAAW,kBAAkB;IAIjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;gBAGnB,QAAQ,EAAE,eAAe,EACzD,QAAQ,EAAE,wBAAwB,EAClC,KAAK,EAAE,kBAAkB;IAGtC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YA4CvC,iBAAiB;CAyChC;AAqBD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC5C,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,EACrD,KAAK,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAC3C,OAAO,CAAC,QAAQ,IAAI,eAAe,CAgCrC;AAkCD,qBACa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAKzC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAShC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,EAIzC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAc5B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAiB/D"}
|
|
@@ -13,7 +13,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
13
13
|
};
|
|
14
14
|
var IdentityOrgProtectionProbe_1;
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.OrgProtectionGuard = exports.IdentityOrgProtectionProbe = exports.OrgProtectionUnavailableError = exports.ProtectedOrgErasureRefusedError = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.IDENTITY_SERVICE_NAME = void 0;
|
|
16
|
+
exports.OrgProtectionGuard = exports.IdentityOrgProtectionProbe = exports.OrgProtectionUnavailableError = exports.ProtectedOrgErasureRefusedError = exports.ORGANIZATION_PROTECTED_ERROR_CODE = exports.ORG_PROTECTION_GRANT = exports.IDENTITY_SERVICE_NAME = void 0;
|
|
17
17
|
exports.assertOrgNotProtected = assertOrgNotProtected;
|
|
18
18
|
exports.assertOrgProtectionArmable = assertOrgProtectionArmable;
|
|
19
19
|
const common_1 = require("@nestjs/common");
|
|
@@ -21,6 +21,7 @@ const identity_client_1 = require("@xemahq/identity-client");
|
|
|
21
21
|
const platform_common_1 = require("@xemahq/platform-common");
|
|
22
22
|
const service_registry_nest_1 = require("@xemahq/service-registry-nest");
|
|
23
23
|
exports.IDENTITY_SERVICE_NAME = 'identity-api';
|
|
24
|
+
exports.ORG_PROTECTION_GRANT = Symbol.for('@xemahq/org-erasure-nest:org-protection-grant');
|
|
24
25
|
exports.ORGANIZATION_PROTECTED_ERROR_CODE = 'ORGANIZATION_PROTECTED';
|
|
25
26
|
class ProtectedOrgErasureRefusedError extends common_1.ForbiddenException {
|
|
26
27
|
orgId;
|
|
@@ -70,10 +71,12 @@ async function assertOrgNotProtected(probe, orgId) {
|
|
|
70
71
|
let IdentityOrgProtectionProbe = IdentityOrgProtectionProbe_1 = class IdentityOrgProtectionProbe {
|
|
71
72
|
registry;
|
|
72
73
|
identity;
|
|
74
|
+
grant;
|
|
73
75
|
logger = new common_1.Logger(IdentityOrgProtectionProbe_1.name);
|
|
74
|
-
constructor(registry, identity) {
|
|
76
|
+
constructor(registry, identity, grant) {
|
|
75
77
|
this.registry = registry;
|
|
76
78
|
this.identity = identity;
|
|
79
|
+
this.grant = grant;
|
|
77
80
|
}
|
|
78
81
|
async isOrgProtected(orgId) {
|
|
79
82
|
const realms = this.identity.getAllowedRealms();
|
|
@@ -83,7 +86,7 @@ let IdentityOrgProtectionProbe = IdentityOrgProtectionProbe_1 = class IdentityOr
|
|
|
83
86
|
}
|
|
84
87
|
const baseUrl = (await (0, service_registry_nest_1.resolveHttpUrl)(this.registry, exports.IDENTITY_SERVICE_NAME))
|
|
85
88
|
.replace(/\/$/, '');
|
|
86
|
-
const token = await this.
|
|
89
|
+
const token = await this.grant.getAccessToken();
|
|
87
90
|
for (const realm of realms) {
|
|
88
91
|
const record = await this.fetchOrganization(baseUrl, token, orgId, realm);
|
|
89
92
|
if (record === null) {
|
|
@@ -136,9 +139,9 @@ exports.IdentityOrgProtectionProbe = IdentityOrgProtectionProbe;
|
|
|
136
139
|
exports.IdentityOrgProtectionProbe = IdentityOrgProtectionProbe = IdentityOrgProtectionProbe_1 = __decorate([
|
|
137
140
|
(0, common_1.Injectable)(),
|
|
138
141
|
__param(0, (0, common_1.Inject)(service_registry_nest_1.SERVICE_REGISTRY_TOKEN)),
|
|
139
|
-
__metadata("design:paramtypes", [Object, identity_client_1.IdentityBootstrapService])
|
|
142
|
+
__metadata("design:paramtypes", [Object, identity_client_1.IdentityBootstrapService, Object])
|
|
140
143
|
], IdentityOrgProtectionProbe);
|
|
141
|
-
function assertOrgProtectionArmable(registry, identity) {
|
|
144
|
+
function assertOrgProtectionArmable(registry, identity, grant) {
|
|
142
145
|
const missing = [];
|
|
143
146
|
if (registry === null || registry === undefined) {
|
|
144
147
|
missing.push('SERVICE_REGISTRY_TOKEN (@xemahq/service-registry-nest)');
|
|
@@ -146,23 +149,30 @@ function assertOrgProtectionArmable(registry, identity) {
|
|
|
146
149
|
if (identity === null || identity === undefined) {
|
|
147
150
|
missing.push('IdentityBootstrapService (@xemahq/identity-client)');
|
|
148
151
|
}
|
|
152
|
+
const identityPresent = identity !== null && identity !== undefined;
|
|
153
|
+
if (identityPresent && (grant === null || grant === undefined)) {
|
|
154
|
+
missing.push('ORG_PROTECTION_GRANT (@xemahq/org-erasure-nest; provided by ' +
|
|
155
|
+
'`BiomeDatabaseModule.forRoot({ orgProtectionGrant })`, which ' +
|
|
156
|
+
'`XemaDatabaseModule` supplies)');
|
|
157
|
+
}
|
|
149
158
|
if (missing.length > 0) {
|
|
150
159
|
throw new Error(`[org-erasure] this service mounts the org-erasure route but cannot ` +
|
|
151
160
|
`construct its protected-organization fence: ${missing.join(' and ')} ` +
|
|
152
|
-
`${missing.length > 1 ? 'are' : 'is'} not resolvable.
|
|
153
|
-
`exported GLOBALLY by
|
|
154
|
-
|
|
155
|
-
`
|
|
156
|
-
`
|
|
161
|
+
`${missing.length > 1 ? 'are' : 'is'} not resolvable. The ` +
|
|
162
|
+
`registry and the identity service are exported GLOBALLY by ` +
|
|
163
|
+
`\`XemaServiceModule.forBiome\` (ServiceRegistryModule + ` +
|
|
164
|
+
`IdentityBootstrapModule, each \`global: true\`) and the grant by the ` +
|
|
165
|
+
`global \`BiomeDatabaseModule\`, so a service reaching this error has ` +
|
|
166
|
+
`not wired the platform bootstrap. Refusing to start: an org-erasure route served without the ` +
|
|
157
167
|
`fence lets any service token in the fleet irreversibly erase a ` +
|
|
158
168
|
`PROTECTED organization.`);
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
171
|
let OrgProtectionGuard = class OrgProtectionGuard {
|
|
162
172
|
probe;
|
|
163
|
-
constructor(registry, identity) {
|
|
164
|
-
assertOrgProtectionArmable(registry, identity);
|
|
165
|
-
this.probe = new IdentityOrgProtectionProbe(registry, identity);
|
|
173
|
+
constructor(registry, identity, grant) {
|
|
174
|
+
assertOrgProtectionArmable(registry, identity, grant);
|
|
175
|
+
this.probe = new IdentityOrgProtectionProbe(registry, identity, grant);
|
|
166
176
|
}
|
|
167
177
|
async canActivate(context) {
|
|
168
178
|
const request = context
|
|
@@ -184,6 +194,8 @@ exports.OrgProtectionGuard = OrgProtectionGuard = __decorate([
|
|
|
184
194
|
__param(0, (0, common_1.Inject)(service_registry_nest_1.SERVICE_REGISTRY_TOKEN)),
|
|
185
195
|
__param(1, (0, common_1.Optional)()),
|
|
186
196
|
__param(1, (0, common_1.Inject)(identity_client_1.IdentityBootstrapService)),
|
|
187
|
-
|
|
197
|
+
__param(2, (0, common_1.Optional)()),
|
|
198
|
+
__param(2, (0, common_1.Inject)(exports.ORG_PROTECTION_GRANT)),
|
|
199
|
+
__metadata("design:paramtypes", [Object, Object, Object])
|
|
188
200
|
], OrgProtectionGuard);
|
|
189
201
|
//# sourceMappingURL=org-protection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"org-protection.js","sourceRoot":"","sources":["../../src/lib/org-protection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"org-protection.js","sourceRoot":"","sources":["../../src/lib/org-protection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/org-erasure-nest",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "The org-erasure participant contract, its fenced internal endpoint, and the protected-organization guard for Xema services.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
|
@@ -26,25 +26,25 @@
|
|
|
26
26
|
"@nestjs/swagger": "11.2.6",
|
|
27
27
|
"@types/jest": "^30.0.0",
|
|
28
28
|
"@types/node": "25.2.3",
|
|
29
|
-
"@xemahq/identity-client": "^0.
|
|
30
|
-
"@xemahq/contracts": "^0.
|
|
31
|
-
"@xemahq/platform-common": ">=0.
|
|
29
|
+
"@xemahq/identity-client": "^0.15.5",
|
|
30
|
+
"@xemahq/contracts": "^0.78.0",
|
|
31
|
+
"@xemahq/platform-common": ">=0.77.0",
|
|
32
32
|
"eslint": "^9.39.4",
|
|
33
33
|
"jest": "^30.3.0",
|
|
34
34
|
"prettier": "3.6.2",
|
|
35
35
|
"ts-jest": "^29.4.9",
|
|
36
36
|
"typescript": "5.9.3",
|
|
37
|
-
"@xemahq/
|
|
38
|
-
"@xemahq/
|
|
39
|
-
"@xemahq/
|
|
37
|
+
"@xemahq/service-registry-nest": "1.0.0",
|
|
38
|
+
"@xemahq/eslint-config": "0.14.0",
|
|
39
|
+
"@xemahq/xema-decorators": "1.0.0"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@nestjs/common": "^10 || ^11",
|
|
43
43
|
"@nestjs/core": "^10 || ^11",
|
|
44
44
|
"@nestjs/swagger": "^10 || ^11",
|
|
45
|
-
"@xemahq/identity-client": "
|
|
45
|
+
"@xemahq/identity-client": ">=0.9.0",
|
|
46
46
|
"@xemahq/contracts": ">=0.4.0",
|
|
47
|
-
"@xemahq/platform-common": ">=0.
|
|
47
|
+
"@xemahq/platform-common": ">=0.77.0",
|
|
48
48
|
"@xemahq/service-registry-nest": ">=0.12.0",
|
|
49
49
|
"@xemahq/xema-decorators": ">=0.18.0"
|
|
50
50
|
},
|
|
@@ -62,5 +62,8 @@
|
|
|
62
62
|
"lint": "eslint .",
|
|
63
63
|
"test": "jest",
|
|
64
64
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
65
|
+
},
|
|
66
|
+
"xemaRelease": {
|
|
67
|
+
"sourceDigest": "sha256:3d32a63ac12a184c29102e1150dac3c22ebc6e2ee034bb6ce276bf6814b61174"
|
|
65
68
|
}
|
|
66
|
-
}
|
|
69
|
+
}
|