@memberjunction/codegen-lib 6.1.0-edge.5 → 6.1.0-edge.7
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 +20 -0
- package/dist/Angular/angular-codegen.d.ts +9 -6
- package/dist/Angular/angular-codegen.d.ts.map +1 -1
- package/dist/Angular/angular-codegen.js +80 -51
- package/dist/Angular/angular-codegen.js.map +1 -1
- package/dist/Angular/join-grid-related-entity-component.d.ts.map +1 -1
- package/dist/Angular/join-grid-related-entity-component.js +5 -2
- package/dist/Angular/join-grid-related-entity-component.js.map +1 -1
- package/dist/Angular/related-entity-components.d.ts +11 -0
- package/dist/Angular/related-entity-components.d.ts.map +1 -1
- package/dist/Angular/related-entity-components.js +23 -0
- package/dist/Angular/related-entity-components.js.map +1 -1
- package/dist/Angular/timeline-related-entity-component.d.ts.map +1 -1
- package/dist/Angular/timeline-related-entity-component.js +3 -2
- package/dist/Angular/timeline-related-entity-component.js.map +1 -1
- package/dist/Config/config.d.ts +29 -2
- package/dist/Config/config.d.ts.map +1 -1
- package/dist/Config/config.js +54 -5
- package/dist/Config/config.js.map +1 -1
- package/dist/Database/codeGenDatabaseProvider.d.ts +64 -1
- package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
- package/dist/Database/codeGenDatabaseProvider.js +49 -3
- package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
- package/dist/Database/dbSchema.js +2 -1
- package/dist/Database/dbSchema.js.map +1 -1
- package/dist/Database/entity-field-change-tracking.d.ts +53 -0
- package/dist/Database/entity-field-change-tracking.d.ts.map +1 -0
- package/dist/Database/entity-field-change-tracking.js +120 -0
- package/dist/Database/entity-field-change-tracking.js.map +1 -0
- package/dist/Database/entity-level-tree-cycles.d.ts.map +1 -1
- package/dist/Database/entity-level-tree-cycles.js +3 -2
- package/dist/Database/entity-level-tree-cycles.js.map +1 -1
- package/dist/Database/field-metadata-lock.d.ts +47 -0
- package/dist/Database/field-metadata-lock.d.ts.map +1 -0
- package/dist/Database/field-metadata-lock.js +159 -0
- package/dist/Database/field-metadata-lock.js.map +1 -0
- package/dist/Database/manage-metadata.d.ts +133 -51
- package/dist/Database/manage-metadata.d.ts.map +1 -1
- package/dist/Database/manage-metadata.js +574 -306
- package/dist/Database/manage-metadata.js.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +10 -2
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +113 -42
- package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
- package/dist/Database/providers/postgresql/metadataSupportObjects.js +31 -8
- package/dist/Database/providers/postgresql/metadataSupportObjects.js.map +1 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +47 -2
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +176 -30
- package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
- package/dist/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.js +15 -2
- package/dist/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.js.map +1 -1
- package/dist/Database/reconcileFieldLevelSecurity.d.ts +22 -0
- package/dist/Database/reconcileFieldLevelSecurity.d.ts.map +1 -0
- package/dist/Database/reconcileFieldLevelSecurity.js +47 -0
- package/dist/Database/reconcileFieldLevelSecurity.js.map +1 -0
- package/dist/Database/sql_codegen.d.ts +34 -0
- package/dist/Database/sql_codegen.d.ts.map +1 -1
- package/dist/Database/sql_codegen.js +152 -14
- package/dist/Database/sql_codegen.js.map +1 -1
- package/dist/Manifest/GenerateClassRegistrationsManifest.d.ts.map +1 -1
- package/dist/Manifest/GenerateClassRegistrationsManifest.js +3 -2
- package/dist/Manifest/GenerateClassRegistrationsManifest.js.map +1 -1
- package/dist/Misc/action_subclasses_codegen.js +2 -2
- package/dist/Misc/action_subclasses_codegen.js.map +1 -1
- package/dist/Misc/advanced_generation.d.ts +17 -5
- package/dist/Misc/advanced_generation.d.ts.map +1 -1
- package/dist/Misc/advanced_generation.js +69 -23
- package/dist/Misc/advanced_generation.js.map +1 -1
- package/dist/Misc/codegen-reporter.d.ts +2 -0
- package/dist/Misc/codegen-reporter.d.ts.map +1 -1
- package/dist/Misc/codegen-reporter.js +6 -2
- package/dist/Misc/codegen-reporter.js.map +1 -1
- package/dist/Misc/entity_subclasses_codegen.d.ts.map +1 -1
- package/dist/Misc/entity_subclasses_codegen.js +30 -20
- package/dist/Misc/entity_subclasses_codegen.js.map +1 -1
- package/dist/Misc/graphql_server_codegen.d.ts +39 -0
- package/dist/Misc/graphql_server_codegen.d.ts.map +1 -1
- package/dist/Misc/graphql_server_codegen.js +63 -9
- package/dist/Misc/graphql_server_codegen.js.map +1 -1
- package/dist/Misc/remote_operations_codegen.d.ts +36 -1
- package/dist/Misc/remote_operations_codegen.d.ts.map +1 -1
- package/dist/Misc/remote_operations_codegen.js +178 -8
- package/dist/Misc/remote_operations_codegen.js.map +1 -1
- package/dist/Misc/schema-emit.d.ts.map +1 -1
- package/dist/Misc/schema-emit.js +2 -1
- package/dist/Misc/schema-emit.js.map +1 -1
- package/dist/Misc/sql_logging.d.ts +63 -8
- package/dist/Misc/sql_logging.d.ts.map +1 -1
- package/dist/Misc/sql_logging.js +169 -42
- package/dist/Misc/sql_logging.js.map +1 -1
- package/dist/Misc/util.d.ts +12 -0
- package/dist/Misc/util.d.ts.map +1 -1
- package/dist/Misc/util.js +71 -8
- package/dist/Misc/util.js.map +1 -1
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +28 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/runCodeGen.d.ts.map +1 -1
- package/dist/runCodeGen.js +134 -26
- package/dist/runCodeGen.js.map +1 -1
- package/package.json +29 -29
package/dist/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseViewEmissionGoldenMaster.test.js","sourceRoot":"","sources":["../../../../../src/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseViewEmissionGoldenMaster.test.js","sourceRoot":"","sources":["../../../../../src/Database/providers/sqlserver/__tests__/BaseViewEmissionGoldenMaster.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Brings every field-security-enabled entity's permission rows back in line with its current
|
|
4
|
+
* fields and entity-level permissions.
|
|
5
|
+
*
|
|
6
|
+
* This is the schema-change half of field-security lifecycle management, and the reason it lives
|
|
7
|
+
* in CodeGen: a column added to an enabled entity has no permission rows, and on an enabled
|
|
8
|
+
* entity a field with no rows is DENIED. Without this pass a new column would be invisible to
|
|
9
|
+
* every user — including the administrator who added it — until something else happened to
|
|
10
|
+
* reconcile. It also removes rows orphaned by a dropped column or a role that lost entity access.
|
|
11
|
+
*
|
|
12
|
+
* Must run AFTER the metadata refresh that follows `manageMetadata`, or it computes the delta
|
|
13
|
+
* from a field list that predates the columns it exists to cover.
|
|
14
|
+
*
|
|
15
|
+
* Failures are logged and swallowed. Reconciliation is a maintenance pass over data CodeGen does
|
|
16
|
+
* not own; failing the whole run — after schema, views and procs have already been written —
|
|
17
|
+
* would trade a recoverable permissions gap for an unrecoverable half-finished build. The gap is
|
|
18
|
+
* also visible rather than silent: a missing row denies, so the symptom is "I cannot see this new
|
|
19
|
+
* column", not "everyone can see it".
|
|
20
|
+
*/
|
|
21
|
+
export declare function reconcileFieldLevelSecurity(provider: IMetadataProvider, currentUser: UserInfo): Promise<boolean>;
|
|
22
|
+
//# sourceMappingURL=reconcileFieldLevelSecurity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcileFieldLevelSecurity.d.ts","sourceRoot":"","sources":["../../src/Database/reconcileFieldLevelSecurity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAI/E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CA4BtH"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ReconcileFieldPermissions } from '@memberjunction/core-entities-server';
|
|
2
|
+
import { logError, logStatus } from '../Misc/status_logging.js';
|
|
3
|
+
/**
|
|
4
|
+
* Brings every field-security-enabled entity's permission rows back in line with its current
|
|
5
|
+
* fields and entity-level permissions.
|
|
6
|
+
*
|
|
7
|
+
* This is the schema-change half of field-security lifecycle management, and the reason it lives
|
|
8
|
+
* in CodeGen: a column added to an enabled entity has no permission rows, and on an enabled
|
|
9
|
+
* entity a field with no rows is DENIED. Without this pass a new column would be invisible to
|
|
10
|
+
* every user — including the administrator who added it — until something else happened to
|
|
11
|
+
* reconcile. It also removes rows orphaned by a dropped column or a role that lost entity access.
|
|
12
|
+
*
|
|
13
|
+
* Must run AFTER the metadata refresh that follows `manageMetadata`, or it computes the delta
|
|
14
|
+
* from a field list that predates the columns it exists to cover.
|
|
15
|
+
*
|
|
16
|
+
* Failures are logged and swallowed. Reconciliation is a maintenance pass over data CodeGen does
|
|
17
|
+
* not own; failing the whole run — after schema, views and procs have already been written —
|
|
18
|
+
* would trade a recoverable permissions gap for an unrecoverable half-finished build. The gap is
|
|
19
|
+
* also visible rather than silent: a missing row denies, so the symptom is "I cannot see this new
|
|
20
|
+
* column", not "everyone can see it".
|
|
21
|
+
*/
|
|
22
|
+
export async function reconcileFieldLevelSecurity(provider, currentUser) {
|
|
23
|
+
const enabled = (provider?.Entities ?? []).filter((e) => e.EnableFieldLevelSecurity);
|
|
24
|
+
if (enabled.length === 0) {
|
|
25
|
+
return true; // nothing opted in — the overwhelmingly common case
|
|
26
|
+
}
|
|
27
|
+
let inserted = 0;
|
|
28
|
+
let deleted = 0;
|
|
29
|
+
let failures = 0;
|
|
30
|
+
for (const entity of enabled) {
|
|
31
|
+
try {
|
|
32
|
+
const result = await ReconcileFieldPermissions(entity, provider, currentUser);
|
|
33
|
+
inserted += result.Inserted;
|
|
34
|
+
deleted += result.Deleted;
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
failures++;
|
|
38
|
+
logError(` Field-security reconciliation failed for '${entity.Name}': ${e instanceof Error ? e.message : String(e)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (inserted > 0 || deleted > 0) {
|
|
42
|
+
logStatus(` Field-level security: reconciled ${enabled.length} entity(ies) — ` +
|
|
43
|
+
`${inserted} permission row(s) added, ${deleted} removed`);
|
|
44
|
+
}
|
|
45
|
+
return failures === 0;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=reconcileFieldLevelSecurity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcileFieldLevelSecurity.js","sourceRoot":"","sources":["../../src/Database/reconcileFieldLevelSecurity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,QAA2B,EAAE,WAAqB;IAChG,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,CAAC,oDAAoD;IACrE,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC9E,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,gDAAgD,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5H,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,CACL,uCAAuC,OAAO,CAAC,MAAM,iBAAiB;YACtE,GAAG,QAAQ,6BAA6B,OAAO,UAAU,CAC5D,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,KAAK,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -74,6 +74,31 @@ export declare class SQLCodeGenBase {
|
|
|
74
74
|
*/
|
|
75
75
|
protected applyLatePhaseFixups(pool: CodeGenConnection, regenList: ViewRegenEntry[], regenEntities: EntityInfo[]): Promise<void>;
|
|
76
76
|
runCustomSQLScripts(pool: CodeGenConnection, when: string): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Builds the once-per-run {@link FieldSecurityRunContext} and hands it to the dialect
|
|
79
|
+
* provider (whose permission emitters are synchronous string builders and cannot query).
|
|
80
|
+
* Three inputs, all read here:
|
|
81
|
+
*
|
|
82
|
+
* 1. **Managed roles** — `MJ: Roles` metadata rows with a non-blank `SQLName`, EXCLUDING
|
|
83
|
+
* the standard UI/Developer/Integration roles: by decision D1a, field-security DENYs
|
|
84
|
+
* target custom (DBA-created) roles only, so standard roles never enter
|
|
85
|
+
* `RoleSQLNameByID` and Deny rows against them stay app-tier-enforced.
|
|
86
|
+
* 2. **Service-protected roles** — roles any protected principal is a member of
|
|
87
|
+
* (`sys.database_role_members`). Protected principals default to the known service
|
|
88
|
+
* logins (`MJ_Connect`, `MJ_Connect_Dev`) plus the configured CodeGen login; a DENY
|
|
89
|
+
* to such a role would strip the column from the service login itself.
|
|
90
|
+
* 3. **Catalog permission state** — every `sys.database_permissions` entry (object- and
|
|
91
|
+
* column-level) granted to a managed role, keyed by `<schema>.<object>`. This powers
|
|
92
|
+
* the wipe-and-reassert reconciliation (decision D7) that finally makes permission
|
|
93
|
+
* REMOVAL propagate: the historical model was assert-only, so a deleted
|
|
94
|
+
* `EntityPermission` / Deny row left its GRANT/DENY in the database until the view
|
|
95
|
+
* happened to be regenerated.
|
|
96
|
+
*
|
|
97
|
+
* SQL Server only (PostgreSQL emits no DB-tier field security, decision D2). Any failure
|
|
98
|
+
* degrades to a null context — emitters fall back to the historical grants-only output —
|
|
99
|
+
* with a prominent warning, never a failed run.
|
|
100
|
+
*/
|
|
101
|
+
protected prepareFieldSecurityRunContext(pool: CodeGenConnection): Promise<void>;
|
|
77
102
|
applyPermissions(pool: CodeGenConnection, directory: string, entities: EntityInfo[], batchSize?: number): Promise<boolean>;
|
|
78
103
|
/**
|
|
79
104
|
* This function will handle the process of creating all of the generated objects like base view, stored procedures, etc. for all entities in the entities array. It will generate the SQL for each entity and then execute it.
|
|
@@ -380,6 +405,15 @@ export declare class SQLCodeGenBase {
|
|
|
380
405
|
* Virtual fields are excluded — see hasNativeGeoFields for the rationale.
|
|
381
406
|
*/
|
|
382
407
|
protected generateNativeGeoFields(entityFields: EntityFieldInfo[], classNameFirstChar: string, qi: (name: string) => string): string;
|
|
408
|
+
/**
|
|
409
|
+
* Bubble lat/lng from EmbeddedRecord peers as `__mj_Latitude_{FK}`.
|
|
410
|
+
* Geocode lives on the Address (or other source); the parent only displays it.
|
|
411
|
+
*/
|
|
412
|
+
protected generateEmbeddedGeoSelect(entity: EntityInfo, classNameFirstChar: string): {
|
|
413
|
+
select: string;
|
|
414
|
+
joins: string;
|
|
415
|
+
};
|
|
416
|
+
protected generateEmbeddedGeoJoins(entity: EntityInfo, classNameFirstChar: string): string;
|
|
383
417
|
/**
|
|
384
418
|
* Generate SELECT aliases from the RecordGeoCode LEFT JOIN → __mj_Latitude / __mj_Longitude.
|
|
385
419
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_codegen.d.ts","sourceRoot":"","sources":["../../src/Database/sql_codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAkC,QAAQ,
|
|
1
|
+
{"version":3,"file":"sql_codegen.d.ts","sourceRoot":"","sources":["../../src/Database/sql_codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAkC,QAAQ,EAAoH,MAAM,sBAAsB,CAAC;AAK/N,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAmD,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAI/J,OAAO,EAAsB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWvE,eAAO,MAAM,MAAM;;;;CAIP,CAAC;AAEb,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EACzE,QAAQ,EAAE,CAAC,EAAE,EACb,cAAc,EAAE,MAAM,EAAE,GACzB,CAAC,EAAE,CAGL;AAGD;;;;GAIG;AACH,qBAAa,cAAc;IACvB,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAkF;IAC7H,IAAW,gBAAgB,IAAI,cAAc,CAE5C;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,WAAW,EAAE,uBAAuB,CAIvC;IACP,IAAW,UAAU,IAAI,uBAAuB,CAE/C;IACD,IAAW,UAAU,CAAC,KAAK,EAAE,uBAAuB,EAEnD;IAED;;OAEG;IACH,SAAS,CAAC,sCAAsC,EAAE,MAAM,EAAE,CAAM;IAEhE;;OAEG;IACH,SAAS,CAAC,sCAAsC,EAAE,OAAO,CAAS;IAElE;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAa;IAE1E;;OAEG;IACH,SAAS,CAAC,mCAAmC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAEvE;;OAEG;IACH,SAAS,CAAC,sCAAsC,EAAE,MAAM,EAAE,CAAM;IAEhE;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAQ;IAEzC,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAiXtJ;;;;OAIG;cACa,oBAAoB,CAChC,IAAI,EAAE,iBAAiB,EACvB,SAAS,EAAE,cAAc,EAAE,EAC3B,aAAa,EAAE,UAAU,EAAE,GAC5B,OAAO,CAAC,IAAI,CAAC;IAqBH,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBzF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;cACa,8BAA8B,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4EzE,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAuD1I;;;;;;OAMG;IACU,0CAA0C,CAAC,OAAO,EAAE;QAC7D,IAAI,EAAE,iBAAiB,CAAC;QACxB,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,wCAAwC,CAAC,EAAE,OAAO,CAAC;QACnD;mFAC2E;QAC3E,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAC/B,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC;IAmEzC,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE;IA6BpE,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE;IAmB3E,gDAAgD,CAAC,OAAO,EAAE;QACnE,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE,UAAU,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,wCAAwC,CAAC,EAAE,OAAO,CAAC;QACnD;;sDAE8C;QAC9C,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAC/B,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC;IA4ChD;;;;;OAKG;IACU,qBAAqB,CAC9B,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,GACxC,OAAO,CAAC,qBAAqB,CAAC;IA2DjC;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAI3E;;;;;;;;;OASG;cACa,wBAAwB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDjI;;;;;;;;;;;;;;;;;;;;;OAqBG;cACa,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9H;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqBxD,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,EAAE,QAAQ,GAAE,OAAe;IA+D/I;;;;;OAKG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;IAiB7C;;;OAGG;IACH,SAAS,CAAC,iCAAiC,IAAI,UAAU,EAAE;IAoB3D;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,6BAA6B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM;IAoB1D,sCAAsC,CAAC,OAAO,EAAE;QACzD,IAAI,EAAE,iBAAiB,CAAC;QACxB,MAAM,EAAE,UAAU,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,OAAO,CAAC;QACzB,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,wCAAwC,CAAC,EAAE,OAAO,CAAA;KACrD,GAAG,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAC,CAAC;IAuR5D,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1D;;;;OAIG;cACa,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpG,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAOxE,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO;IAIjG,4BAA4B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAsBjE;;;;;;OAMG;IACU,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IA2CtF,+BAA+B,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC;IA4C1H,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzF,gCAAgC,IAAI,MAAM;IAI1C,iCAAiC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItF;;;OAGG;IACH,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAKlF;;;;;;;;OAQG;IACH,8BAA8B,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAK1D;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE;IAqB3E;;OAEG;IACH,SAAS,CAAC,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC;IAkCvK;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM;IAIpF;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM;IAUjG;;;OAGG;IACH,SAAS,CAAC,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAWhI;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAYzH;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAI3H;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAItH;;;OAGG;IACH,SAAS,CAAC,yBAAyB,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAI5H;;;;;OAKG;IACH,SAAS,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAwBtE;;;;OAIG;IACH,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IA6BrF,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpF;;;;;;;OAOG;IACG,sBAAsB,CACxB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,UAAU,GACnB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IA8DpD,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAI7D;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,2CAA2C,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM;IAqBrI;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAOnC,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM;IA4D5F;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,OAAO;IAItE;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAC7B,YAAY,EAAE,eAAe,EAAE,EAC/B,kBAAkB,EAAE,MAAM,EAC1B,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC7B,MAAM;IAOT;;;OAGG;IACH,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAwBtH,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAK1F;;OAEG;IACH,SAAS,CAAC,2BAA2B,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM;IAIrE,mCAAmC,CAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA2KpH,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,OAAO,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAA;KAAC;IAc3I,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOvC,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM;IAQrF,SAAS,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAO7E,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,OAAO;IAenG,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIzF,SAAS,CAAC,yCAAyC,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAKrG,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAKtD,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAI9D,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAItD;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM;IAIhF,SAAS,CAAC,6BAA6B,CAAC,YAAY,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM;IAInG,SAAS,CAAC,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAE,OAAe,GAAG,MAAM;IAKzJ,SAAS,CAAC,8BAA8B,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM;cAKjE,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;cAK9E,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;cA8BpF,8BAA8B,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAwDvK,SAAS,CAAC,8BAA8B,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM;IAS/J,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,GAAE,MAAW,GAAG;QAC1E,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAA;KACnB;IAUD,SAAS,CAAC,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAE,MAAW,GAAG;QACvG,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAA;KACpB;IAMD;;;;;OAKG;cACa,kCAAkC,CAC9C,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAYnB;;;OAGG;IACH,SAAS,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAgDpE;;;OAGG;cACa,8BAA8B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCrF;;;OAGG;cACa,gCAAgC,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgCtG;;;OAGG;cACa,6CAA6C,CACzD,IAAI,EAAE,iBAAiB,EACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAgBvB;;;OAGG;cACa,wCAAwC,CACpD,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;IAoDhB;;;;;;;;OAQG;IACH,SAAS,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;CA8EzG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityInfo, Metadata } from '@memberjunction/core';
|
|
1
|
+
import { EntityInfo, Metadata, ShouldJoinRecordGeoCodes, HasNativeLatLngFields, NativeLatitudeField, NativeLongitudeField, ListEmbeddedGeoSpecs } from '@memberjunction/core';
|
|
2
2
|
import { logError, logStatus, logWarning, startSpinner, updateSpinner, succeedSpinner, failSpinner } from '../Misc/status_logging.js';
|
|
3
3
|
import * as fs from 'fs';
|
|
4
4
|
import path from 'path';
|
|
@@ -141,6 +141,13 @@ export class SQLCodeGenBase {
|
|
|
141
141
|
startSpinner('Cleaning generated files...');
|
|
142
142
|
this.deleteGeneratedEntityFiles(directory, baselineEntities);
|
|
143
143
|
succeedSpinner('Cleaned generated files');
|
|
144
|
+
// STEP 2(a.5) - field-level security / permission-reconciliation run context.
|
|
145
|
+
// One async pass over the live catalog (permission state + service-login role
|
|
146
|
+
// memberships) so the synchronous permission emitters can (1) REVOKE-and-reassert
|
|
147
|
+
// within the managed scope — which is what makes GRANT/DENY *removal* reach the
|
|
148
|
+
// database at all — and (2) emit field-security column DENYs safely. SQL Server
|
|
149
|
+
// only: PostgreSQL has no DENY primitive, so per decision D2 it emits nothing.
|
|
150
|
+
await this.prepareFieldSecurityRunContext(pool);
|
|
144
151
|
// STEP 2(b) - generate all the SQL files and execute them
|
|
145
152
|
startSpinner(`Generating SQL for ${includedEntities.length} entities...`);
|
|
146
153
|
const step2StartTime = new Date();
|
|
@@ -459,6 +466,98 @@ export class SQLCodeGenBase {
|
|
|
459
466
|
return false;
|
|
460
467
|
}
|
|
461
468
|
}
|
|
469
|
+
/**
|
|
470
|
+
* Builds the once-per-run {@link FieldSecurityRunContext} and hands it to the dialect
|
|
471
|
+
* provider (whose permission emitters are synchronous string builders and cannot query).
|
|
472
|
+
* Three inputs, all read here:
|
|
473
|
+
*
|
|
474
|
+
* 1. **Managed roles** — `MJ: Roles` metadata rows with a non-blank `SQLName`, EXCLUDING
|
|
475
|
+
* the standard UI/Developer/Integration roles: by decision D1a, field-security DENYs
|
|
476
|
+
* target custom (DBA-created) roles only, so standard roles never enter
|
|
477
|
+
* `RoleSQLNameByID` and Deny rows against them stay app-tier-enforced.
|
|
478
|
+
* 2. **Service-protected roles** — roles any protected principal is a member of
|
|
479
|
+
* (`sys.database_role_members`). Protected principals default to the known service
|
|
480
|
+
* logins (`MJ_Connect`, `MJ_Connect_Dev`) plus the configured CodeGen login; a DENY
|
|
481
|
+
* to such a role would strip the column from the service login itself.
|
|
482
|
+
* 3. **Catalog permission state** — every `sys.database_permissions` entry (object- and
|
|
483
|
+
* column-level) granted to a managed role, keyed by `<schema>.<object>`. This powers
|
|
484
|
+
* the wipe-and-reassert reconciliation (decision D7) that finally makes permission
|
|
485
|
+
* REMOVAL propagate: the historical model was assert-only, so a deleted
|
|
486
|
+
* `EntityPermission` / Deny row left its GRANT/DENY in the database until the view
|
|
487
|
+
* happened to be regenerated.
|
|
488
|
+
*
|
|
489
|
+
* SQL Server only (PostgreSQL emits no DB-tier field security, decision D2). Any failure
|
|
490
|
+
* degrades to a null context — emitters fall back to the historical grants-only output —
|
|
491
|
+
* with a prominent warning, never a failed run.
|
|
492
|
+
*/
|
|
493
|
+
async prepareFieldSecurityRunContext(pool) {
|
|
494
|
+
if (this._dbProvider.PlatformKey !== 'sqlserver') {
|
|
495
|
+
this._dbProvider.SetFieldSecurityRunContext(null);
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
try {
|
|
499
|
+
const md = new Metadata(); // global-provider-ok: codegen runs offline against a single provider
|
|
500
|
+
const standardRoleNames = new Set(['ui', 'developer', 'integration']);
|
|
501
|
+
const managedRoles = md.Roles.filter(r => (r.SQLName ?? '').trim().length > 0 && !standardRoleNames.has((r.Name ?? '').trim().toLowerCase()));
|
|
502
|
+
const roleSQLNameByID = new Map();
|
|
503
|
+
for (const role of managedRoles) {
|
|
504
|
+
roleSQLNameByID.set((role.ID ?? '').trim().toLowerCase(), role.SQLName.trim());
|
|
505
|
+
}
|
|
506
|
+
// The reconciliation scope includes the STANDARD roles' grants too (their view
|
|
507
|
+
// GRANTs / proc EXECUTEs are CodeGen-owned and must self-heal like any other),
|
|
508
|
+
// so the catalog query spans every non-blank-SQLName role — only the DENY
|
|
509
|
+
// emission path is restricted to the custom-role map above.
|
|
510
|
+
const allManagedSQLNames = md.Roles
|
|
511
|
+
.map(r => (r.SQLName ?? '').trim())
|
|
512
|
+
.filter(n => n.length > 0);
|
|
513
|
+
const escape = (name) => name.replace(/'/g, "''");
|
|
514
|
+
const protectedPrincipals = [...new Set(['MJ_Connect', 'MJ_Connect_Dev', (configInfo.codeGenLogin ?? '').trim()].filter(p => p.length > 0))];
|
|
515
|
+
const membershipResult = await pool.query(`
|
|
516
|
+
SELECT DISTINCT r.name AS role_name
|
|
517
|
+
FROM sys.database_role_members drm
|
|
518
|
+
JOIN sys.database_principals r ON r.principal_id = drm.role_principal_id
|
|
519
|
+
JOIN sys.database_principals m ON m.principal_id = drm.member_principal_id
|
|
520
|
+
WHERE m.name IN (${protectedPrincipals.map(p => `N'${escape(p)}'`).join(', ')})
|
|
521
|
+
`);
|
|
522
|
+
const serviceProtected = new Set(membershipResult.recordset.map(r => r.role_name.trim().toLowerCase()));
|
|
523
|
+
const catalog = new Map();
|
|
524
|
+
if (allManagedSQLNames.length > 0) {
|
|
525
|
+
const permissionResult = await pool.query(`
|
|
526
|
+
SELECT pr.name AS role_name, s.name AS schema_name, o.name AS object_name,
|
|
527
|
+
c.name AS column_name, p.state_desc, p.permission_name
|
|
528
|
+
FROM sys.database_permissions p
|
|
529
|
+
JOIN sys.database_principals pr ON pr.principal_id = p.grantee_principal_id
|
|
530
|
+
JOIN sys.objects o ON o.object_id = p.major_id
|
|
531
|
+
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
|
532
|
+
LEFT JOIN sys.columns c ON c.object_id = p.major_id AND c.column_id = p.minor_id
|
|
533
|
+
WHERE p.class = 1
|
|
534
|
+
AND pr.name IN (${allManagedSQLNames.map(n => `N'${escape(n)}'`).join(', ')})
|
|
535
|
+
`);
|
|
536
|
+
for (const row of permissionResult.recordset) {
|
|
537
|
+
const key = `${row.schema_name}.${row.object_name}`.toLowerCase();
|
|
538
|
+
const entries = catalog.get(key) ?? [];
|
|
539
|
+
entries.push({
|
|
540
|
+
RoleName: row.role_name.trim(),
|
|
541
|
+
PermissionName: row.permission_name.trim(),
|
|
542
|
+
StateDesc: row.state_desc.trim(),
|
|
543
|
+
ColumnName: row.column_name ? row.column_name.trim() : null,
|
|
544
|
+
});
|
|
545
|
+
catalog.set(key, entries);
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
this._dbProvider.SetFieldSecurityRunContext({
|
|
549
|
+
ServiceProtectedRoleSQLNames: serviceProtected,
|
|
550
|
+
CatalogPermissions: catalog,
|
|
551
|
+
RoleSQLNameByID: roleSQLNameByID,
|
|
552
|
+
});
|
|
553
|
+
logStatus(` Field-security run context ready: ${roleSQLNameByID.size} custom role(s), ${serviceProtected.size} service-protected role(s), ${catalog.size} object(s) with managed permissions`);
|
|
554
|
+
}
|
|
555
|
+
catch (e) {
|
|
556
|
+
logWarning(` ⚠️ Could not build the field-security run context (${e instanceof Error ? e.message : String(e)}). ` +
|
|
557
|
+
`Permission emission degrades to grants-only for this run: no field-security DENYs and no reconciliation REVOKEs.`);
|
|
558
|
+
this._dbProvider.SetFieldSecurityRunContext(null);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
462
561
|
async applyPermissions(pool, directory, entities, batchSize = 5) {
|
|
463
562
|
try {
|
|
464
563
|
let bSuccess = true;
|
|
@@ -680,6 +779,8 @@ export class SQLCodeGenBase {
|
|
|
680
779
|
// BaseView while CodeGen keeps writing the inner view underneath it. Gating on
|
|
681
780
|
// BaseViewGenerated alone would skip the inner view and leave the custom layer selecting
|
|
682
781
|
// from an object that does not exist.
|
|
782
|
+
// One pass: overlay already applied → Pass 1 sees extra BaseView columns and logs
|
|
783
|
+
// EntityField INSERTs; Pass 2 DROPs/creates only GeneratedViewName, never the overlay.
|
|
683
784
|
const generatesView = (entity.BaseViewGenerated || entity.HasLayeredBaseView) && !entity.VirtualEntity;
|
|
684
785
|
const tvfSQL = generatesView ? this.generateRecursiveFKTVFs(entity) : '';
|
|
685
786
|
const viewPieces = generatesView
|
|
@@ -1596,17 +1697,22 @@ export class SQLCodeGenBase {
|
|
|
1596
1697
|
const classNameFirstChar = entity.BaseTableCodeName.charAt(0).toLowerCase();
|
|
1597
1698
|
let relatedFieldsString = await this.generateBaseViewRelatedFieldsString(pool, entity.Fields);
|
|
1598
1699
|
const relatedFieldsJoinString = this.generateBaseViewJoins(entity, entity.Fields);
|
|
1599
|
-
// Geo
|
|
1600
|
-
//
|
|
1700
|
+
// Geo WRITE source: native lat/lng aliases, or RecordGeoCode JOIN when the entity
|
|
1701
|
+
// has writable Geo* fields and no native coords. Display-only entities (Person/Org
|
|
1702
|
+
// virtual PrimaryAddress*) do not get a RecordGeoCode join on their own ID.
|
|
1601
1703
|
if (entity.SupportsGeoCoding && entity.Name.trim().toLowerCase() !== 'mj: record geo codes') {
|
|
1602
1704
|
const qi = this._dbProvider.Dialect.QuoteIdentifier.bind(this._dbProvider.Dialect);
|
|
1603
|
-
const geoFieldsSelect =
|
|
1705
|
+
const geoFieldsSelect = HasNativeLatLngFields(entity.Fields)
|
|
1604
1706
|
? this.generateNativeGeoFields(entity.Fields, classNameFirstChar, qi)
|
|
1605
|
-
: this.generateRecordGeoCodeFields(qi);
|
|
1707
|
+
: (ShouldJoinRecordGeoCodes(entity) ? this.generateRecordGeoCodeFields(qi) : '');
|
|
1606
1708
|
if (geoFieldsSelect) {
|
|
1607
1709
|
relatedFieldsString += (relatedFieldsString ? ',\n' : '') + geoFieldsSelect;
|
|
1608
1710
|
}
|
|
1609
1711
|
}
|
|
1712
|
+
const embeddedGeo = this.generateEmbeddedGeoSelect(entity, classNameFirstChar);
|
|
1713
|
+
if (embeddedGeo.select) {
|
|
1714
|
+
relatedFieldsString += (relatedFieldsString ? ',\n' : '') + embeddedGeo.select;
|
|
1715
|
+
}
|
|
1610
1716
|
// GRANTs target the PUBLIC view (BaseView), not the one this method generates. For a
|
|
1611
1717
|
// LAYERED entity those are different objects, and the outer one may not exist yet: the
|
|
1612
1718
|
// documented setup is "name the inner view -> run CodeGen -> then create BaseView", so the
|
|
@@ -1720,10 +1826,9 @@ export class SQLCodeGenBase {
|
|
|
1720
1826
|
sOutput += `${ef.AllowsNull ? 'LEFT OUTER' : 'INNER'} JOIN\n ${qs(ef.RelatedEntitySchemaName, relatedTable)} AS ${ef._RelatedEntityTableAlias}\n ON\n ${qi(classNameFirstChar)}.${qi(ef.Name)} = ${ef._RelatedEntityTableAlias}.${qi(ef.RelatedEntityFieldName)}`;
|
|
1721
1827
|
}
|
|
1722
1828
|
}
|
|
1723
|
-
// Geo
|
|
1724
|
-
//
|
|
1725
|
-
|
|
1726
|
-
if (entity.SupportsGeoCoding && !this.hasNativeGeoFields(entityFields) && entity.Name.trim().toLowerCase() !== 'mj: record geo codes') {
|
|
1829
|
+
// Geo WRITE source: RecordGeoCode JOIN only when there are writable Geo* fields
|
|
1830
|
+
// and no native lat/lng. Display-only entities skip this join.
|
|
1831
|
+
if (ShouldJoinRecordGeoCodes(entity)) {
|
|
1727
1832
|
const dialect = this._dbProvider.Dialect;
|
|
1728
1833
|
const qi = dialect.QuoteIdentifier.bind(dialect);
|
|
1729
1834
|
const qs = dialect.QuoteSchema.bind(dialect);
|
|
@@ -1747,6 +1852,7 @@ export class SQLCodeGenBase {
|
|
|
1747
1852
|
}
|
|
1748
1853
|
sOutput += `LEFT OUTER JOIN\n ${qs(mjCoreSchema, 'vwRecordGeoCodes')} AS __mj_rgc\n ON\n __mj_rgc.${qi('EntityID')} = '${entity.ID}'\n AND __mj_rgc.${qi('RecordID')} = ${recordIdExpr}\n AND __mj_rgc.${qi('LocationType')} = 'Primary'`;
|
|
1749
1854
|
}
|
|
1855
|
+
sOutput += this.generateEmbeddedGeoJoins(entity, classNameFirstChar);
|
|
1750
1856
|
return sOutput;
|
|
1751
1857
|
}
|
|
1752
1858
|
/**
|
|
@@ -1763,21 +1869,53 @@ export class SQLCodeGenBase {
|
|
|
1763
1869
|
* on any geo-eligible entity whose RecordGeoCode-based view ran once.
|
|
1764
1870
|
*/
|
|
1765
1871
|
hasNativeGeoFields(entityFields) {
|
|
1766
|
-
|
|
1767
|
-
const hasLng = entityFields.some(f => f.ExtendedType === 'GeoLongitude' && !f.IsVirtual);
|
|
1768
|
-
return hasLat && hasLng;
|
|
1872
|
+
return HasNativeLatLngFields(entityFields);
|
|
1769
1873
|
}
|
|
1770
1874
|
/**
|
|
1771
1875
|
* Generate SELECT aliases for native lat/lng fields → __mj_Latitude / __mj_Longitude.
|
|
1772
1876
|
* Virtual fields are excluded — see hasNativeGeoFields for the rationale.
|
|
1773
1877
|
*/
|
|
1774
1878
|
generateNativeGeoFields(entityFields, classNameFirstChar, qi) {
|
|
1775
|
-
const latField = entityFields
|
|
1776
|
-
const lngField = entityFields
|
|
1879
|
+
const latField = NativeLatitudeField(entityFields);
|
|
1880
|
+
const lngField = NativeLongitudeField(entityFields);
|
|
1777
1881
|
if (!latField || !lngField)
|
|
1778
1882
|
return '';
|
|
1779
1883
|
return ` ${qi(classNameFirstChar)}.${qi(latField.Name)} AS ${qi('__mj_Latitude')},\n ${qi(classNameFirstChar)}.${qi(lngField.Name)} AS ${qi('__mj_Longitude')}`;
|
|
1780
1884
|
}
|
|
1885
|
+
/**
|
|
1886
|
+
* Bubble lat/lng from EmbeddedRecord peers as `__mj_Latitude_{FK}`.
|
|
1887
|
+
* Geocode lives on the Address (or other source); the parent only displays it.
|
|
1888
|
+
*/
|
|
1889
|
+
generateEmbeddedGeoSelect(entity, classNameFirstChar) {
|
|
1890
|
+
const specs = ListEmbeddedGeoSpecs(entity.Fields);
|
|
1891
|
+
if (specs.length === 0)
|
|
1892
|
+
return { select: '', joins: '' };
|
|
1893
|
+
const md = new Metadata(); // global-provider-ok: CodeGen is CLI tool
|
|
1894
|
+
const qi = this._dbProvider.Dialect.QuoteIdentifier.bind(this._dbProvider.Dialect);
|
|
1895
|
+
const qs = this._dbProvider.Dialect.QuoteSchema.bind(this._dbProvider.Dialect);
|
|
1896
|
+
const selects = [];
|
|
1897
|
+
const joins = [];
|
|
1898
|
+
for (const spec of specs) {
|
|
1899
|
+
const related = md.Entities.find(e => e.ID.toLowerCase() === spec.relatedEntityID.toLowerCase());
|
|
1900
|
+
if (!related)
|
|
1901
|
+
continue;
|
|
1902
|
+
const latF = NativeLatitudeField(related.Fields) ?? related.Fields.find(f => f.Name === '__mj_Latitude' || f.Name === 'PrimaryAddressLatitude');
|
|
1903
|
+
const lngF = NativeLongitudeField(related.Fields) ?? related.Fields.find(f => f.Name === '__mj_Longitude' || f.Name === 'PrimaryAddressLongitude');
|
|
1904
|
+
if (!latF || !lngF)
|
|
1905
|
+
continue;
|
|
1906
|
+
const alias = `__mj_emb_${spec.foreignKeyField}`;
|
|
1907
|
+
const schema = spec.relatedSchemaName || related.SchemaName;
|
|
1908
|
+
const table = spec.relatedBaseTable || related.BaseTable;
|
|
1909
|
+
const joinKind = spec.allowsNull ? 'LEFT OUTER' : 'INNER';
|
|
1910
|
+
joins.push(`${joinKind} JOIN\n ${qs(schema, table)} AS ${alias}\n ON\n ${qi(classNameFirstChar)}.${qi(spec.foreignKeyField)} = ${alias}.${qi(related.FirstPrimaryKey.Name)}`); // first-pk-ok: FK target — a single FK column joins to the related entity's single key
|
|
1911
|
+
selects.push(` ${alias}.${qi(latF.Name)} AS ${qi(spec.lat)},\n ${alias}.${qi(lngF.Name)} AS ${qi(spec.lng)}`);
|
|
1912
|
+
}
|
|
1913
|
+
return { select: selects.join(',\n'), joins: joins.join('\n') };
|
|
1914
|
+
}
|
|
1915
|
+
generateEmbeddedGeoJoins(entity, classNameFirstChar) {
|
|
1916
|
+
const { joins } = this.generateEmbeddedGeoSelect(entity, classNameFirstChar);
|
|
1917
|
+
return joins ? ((entity.Fields.length ? '\n' : '') + joins) : '';
|
|
1918
|
+
}
|
|
1781
1919
|
/**
|
|
1782
1920
|
* Generate SELECT aliases from the RecordGeoCode LEFT JOIN → __mj_Latitude / __mj_Longitude.
|
|
1783
1921
|
*/
|