@futdevpro/nts-dynamo 1.15.116 → 1.15.118
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/.dynamo/logs/cicd-pipeline/output.log +1856 -1863
- package/.dynamo/logs/cicd-pipeline/status.json +37 -37
- package/build/_collections/field-encryption.util.d.ts +52 -0
- package/build/_collections/field-encryption.util.d.ts.map +1 -0
- package/build/_collections/field-encryption.util.js +148 -0
- package/build/_collections/field-encryption.util.js.map +1 -0
- package/build/_modules/server/server-status/server-status.controller.d.ts.map +1 -1
- package/build/_modules/server/server-status/server-status.controller.js +18 -2
- package/build/_modules/server/server-status/server-status.controller.js.map +1 -1
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +15 -2
- package/build/_services/base/db.service.js.map +1 -1
- package/package.json +2 -2
- package/src/_collections/field-encryption.util.spec.ts +109 -0
- package/src/_collections/field-encryption.util.ts +173 -0
- package/src/_modules/server/server-status/server-status.controller.spec.ts +21 -0
- package/src/_modules/server/server-status/server-status.controller.ts +18 -2
- package/src/_services/base/db.service.encryption.spec.ts +76 -0
- package/src/_services/base/db.service.ts +22 -6
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
DyFM_Object
|
|
17
17
|
} from '@futdevpro/fsm-dynamo';
|
|
18
18
|
import { DyNTS_archiveSuffix } from '../../_collections/archive.util';
|
|
19
|
+
import { DyNTS_FieldEncryption_Util } from '../../_collections/field-encryption.util';
|
|
19
20
|
import { DyNTS_DBUpdate } from '../../_models/types/db-update.type';
|
|
20
21
|
import { DyNTS_DBQueryOptions } from '../../_models/interfaces/db-query-options.interface';
|
|
21
22
|
import { DyNTS_global_settings } from '../../_collections/global-settings.const';
|
|
@@ -100,7 +101,11 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
100
101
|
data.__createdBy = issuer;
|
|
101
102
|
data.__lastModifiedBy = issuer;
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
// AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
|
|
105
|
+
// KLÓNON (a hívó `data`-ja plaintext marad). NO-OP, ha nincs encrypt:true mező.
|
|
106
|
+
const encData: T = DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
|
|
107
|
+
|
|
108
|
+
const dataModel = new this.dataModel(encData);
|
|
104
109
|
const newData: T = await dataModel.save().then((res): T => {
|
|
105
110
|
if (res) {
|
|
106
111
|
return res?.toObject() as T;
|
|
@@ -157,12 +162,18 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
157
162
|
data.__lastModifiedBy = issuer;
|
|
158
163
|
}
|
|
159
164
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
165
|
+
// AT-REST field-encryption (opt-in): az encrypt:true mezőket a persist ELŐTT titkosítjuk, egy
|
|
166
|
+
// KLÓNON. KRITIKUS: a `findByIdAndUpdate` MEGKERÜLI a mongoose settereket/pre-save-hookokat, ezért
|
|
167
|
+
// a titkosítás itt, app-rétegben történik (nem mongoose-hookban). A hívó `data`-ja plaintext marad,
|
|
168
|
+
// így a `stringifyDataId(data)` alant no-op decrypttel a plaintextet adja vissza. NO-OP enc-mező nélkül.
|
|
169
|
+
const encData: T = DyNTS_FieldEncryption_Util.encryptDoc(data, this.dataParams.properties);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* EZ A SZAR TELJESEN SZAR, nem friss, nem a db-be mentett adatokat ad vissza,
|
|
173
|
+
* átír random value-kat össze vissza, WTF
|
|
163
174
|
* */
|
|
164
|
-
/* let newData: T = */
|
|
165
|
-
await this.dataModel.findByIdAndUpdate(data._id,
|
|
175
|
+
/* let newData: T = */
|
|
176
|
+
await this.dataModel.findByIdAndUpdate(data._id, encData)/* .then((res) => {
|
|
166
177
|
if (res) {
|
|
167
178
|
//return res?.toObject() as T;
|
|
168
179
|
} else {
|
|
@@ -1277,6 +1288,11 @@ export class DyNTS_DBService<T extends DyFM_Metadata> {
|
|
|
1277
1288
|
// PRIVATE FUNCTIONS
|
|
1278
1289
|
|
|
1279
1290
|
private stringifyDataId(data: T, fnName: string): T {
|
|
1291
|
+
// AT-REST field-decryption (opt-in): ez a KÖZÖS read+write post-processor (minden read + a
|
|
1292
|
+
// create/modify EREDMÉNYE is átmegy rajta), ezért itt fejtjük vissza az encrypt:true envelope-
|
|
1293
|
+
// mezőket load után. NO-OP, ha nincs encrypt:true mező (ugyanaz a referencia — nulla változás).
|
|
1294
|
+
data = DyNTS_FieldEncryption_Util.decryptDoc(data, this.dataParams.properties);
|
|
1295
|
+
|
|
1280
1296
|
if (data?._id && (typeof data._id !== 'string' || typeof data._id === 'object')) {
|
|
1281
1297
|
data._id = `${data._id}`;
|
|
1282
1298
|
|