@digitaldefiance/node-express-suite 2.2.36 → 3.5.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 +28 -3
- package/package.json +5 -5
- package/src/application.d.ts +2 -2
- package/src/application.d.ts.map +1 -1
- package/src/application.js +11 -5
- package/src/application.js.map +1 -1
- package/src/backup-code.d.ts +4 -3
- package/src/backup-code.d.ts.map +1 -1
- package/src/backup-code.js.map +1 -1
- package/src/constants.d.ts +1 -1
- package/src/constants.d.ts.map +1 -1
- package/src/constants.js +2 -0
- package/src/constants.js.map +1 -1
- package/src/controllers/base.d.ts +1 -1
- package/src/controllers/base.d.ts.map +1 -1
- package/src/controllers/base.js +4 -3
- package/src/controllers/base.js.map +1 -1
- package/src/controllers/user.d.ts.map +1 -1
- package/src/controllers/user.js +11 -8
- package/src/controllers/user.js.map +1 -1
- package/src/decorators/base-controller.d.ts.map +1 -1
- package/src/decorators/base-controller.js +1 -1
- package/src/decorators/base-controller.js.map +1 -1
- package/src/defaults.d.ts.map +1 -1
- package/src/defaults.js +28 -0
- package/src/defaults.js.map +1 -1
- package/src/documents/email-token.d.ts +1 -1
- package/src/documents/email-token.d.ts.map +1 -1
- package/src/documents/mnemonic.d.ts +1 -1
- package/src/documents/mnemonic.d.ts.map +1 -1
- package/src/documents/role.d.ts +1 -1
- package/src/documents/role.d.ts.map +1 -1
- package/src/documents/used-direct-login-token.d.ts +1 -1
- package/src/documents/used-direct-login-token.d.ts.map +1 -1
- package/src/documents/user-role.d.ts +1 -1
- package/src/documents/user-role.d.ts.map +1 -1
- package/src/documents/user.d.ts +1 -1
- package/src/documents/user.d.ts.map +1 -1
- package/src/environment.d.ts +14 -12
- package/src/environment.d.ts.map +1 -1
- package/src/environment.js +24 -17
- package/src/environment.js.map +1 -1
- package/src/get-timezone.d.ts.map +1 -1
- package/src/get-timezone.js +2 -1
- package/src/get-timezone.js.map +1 -1
- package/src/interfaces/backend-objects/email-token.d.ts +1 -1
- package/src/interfaces/backend-objects/email-token.d.ts.map +1 -1
- package/src/interfaces/backend-objects/request-user.d.ts +1 -1
- package/src/interfaces/backend-objects/request-user.d.ts.map +1 -1
- package/src/interfaces/backend-objects/role.d.ts +1 -1
- package/src/interfaces/backend-objects/role.d.ts.map +1 -1
- package/src/interfaces/backend-objects/user.d.ts +1 -1
- package/src/interfaces/backend-objects/user.d.ts.map +1 -1
- package/src/interfaces/constants.d.ts +3 -0
- package/src/interfaces/constants.d.ts.map +1 -1
- package/src/interfaces/environment.d.ts +14 -10
- package/src/interfaces/environment.d.ts.map +1 -1
- package/src/interfaces/server-init-result.d.ts +14 -13
- package/src/interfaces/server-init-result.d.ts.map +1 -1
- package/src/middlewares/authenticate-crypto.d.ts +2 -1
- package/src/middlewares/authenticate-crypto.d.ts.map +1 -1
- package/src/middlewares/authenticate-crypto.js +1 -1
- package/src/middlewares/authenticate-crypto.js.map +1 -1
- package/src/middlewares/authenticate-token.d.ts +1 -1
- package/src/middlewares/authenticate-token.d.ts.map +1 -1
- package/src/middlewares/authenticate-token.js +10 -10
- package/src/middlewares/authenticate-token.js.map +1 -1
- package/src/middlewares/cleanup-crypto.d.ts.map +1 -1
- package/src/middlewares/cleanup-crypto.js +1 -1
- package/src/middlewares/cleanup-crypto.js.map +1 -1
- package/src/responses/response-builder.d.ts.map +1 -1
- package/src/responses/response-builder.js +2 -1
- package/src/responses/response-builder.js.map +1 -1
- package/src/schemas/email-token.d.ts +8 -5
- package/src/schemas/email-token.d.ts.map +1 -1
- package/src/schemas/email-token.js +2 -2
- package/src/schemas/email-token.js.map +1 -1
- package/src/schemas/mnemonic.d.ts +6 -5
- package/src/schemas/mnemonic.d.ts.map +1 -1
- package/src/schemas/mnemonic.js.map +1 -1
- package/src/schemas/role.d.ts +9 -6
- package/src/schemas/role.d.ts.map +1 -1
- package/src/schemas/role.js +4 -4
- package/src/schemas/role.js.map +1 -1
- package/src/schemas/schema.js +1 -1
- package/src/schemas/schema.js.map +1 -1
- package/src/schemas/used-direct-login-token.d.ts +8 -5
- package/src/schemas/used-direct-login-token.d.ts.map +1 -1
- package/src/schemas/used-direct-login-token.js +2 -2
- package/src/schemas/used-direct-login-token.js.map +1 -1
- package/src/schemas/user-role.d.ts +8 -5
- package/src/schemas/user-role.d.ts.map +1 -1
- package/src/schemas/user-role.js +6 -6
- package/src/schemas/user-role.js.map +1 -1
- package/src/schemas/user.d.ts +6 -5
- package/src/schemas/user.d.ts.map +1 -1
- package/src/schemas/user.js +5 -5
- package/src/schemas/user.js.map +1 -1
- package/src/services/backup-code.d.ts +9 -9
- package/src/services/backup-code.d.ts.map +1 -1
- package/src/services/backup-code.js +3 -2
- package/src/services/backup-code.js.map +1 -1
- package/src/services/checksum.d.ts +1 -1
- package/src/services/checksum.d.ts.map +1 -1
- package/src/services/database-initialization.d.ts +20 -20
- package/src/services/database-initialization.d.ts.map +1 -1
- package/src/services/database-initialization.js +100 -119
- package/src/services/database-initialization.js.map +1 -1
- package/src/services/db-init-cache.d.ts +1 -1
- package/src/services/db-init-cache.d.ts.map +1 -1
- package/src/services/direct-login-token.d.ts +1 -1
- package/src/services/direct-login-token.d.ts.map +1 -1
- package/src/services/direct-login-token.js.map +1 -1
- package/src/services/jwt.d.ts +2 -2
- package/src/services/jwt.d.ts.map +1 -1
- package/src/services/jwt.js.map +1 -1
- package/src/services/mnemonic.d.ts +7 -7
- package/src/services/mnemonic.d.ts.map +1 -1
- package/src/services/mnemonic.js.map +1 -1
- package/src/services/request-user.d.ts +7 -4
- package/src/services/request-user.d.ts.map +1 -1
- package/src/services/request-user.js +5 -4
- package/src/services/request-user.js.map +1 -1
- package/src/services/role.d.ts +16 -16
- package/src/services/role.d.ts.map +1 -1
- package/src/services/role.js +9 -7
- package/src/services/role.js.map +1 -1
- package/src/services/system-user.d.ts +4 -3
- package/src/services/system-user.d.ts.map +1 -1
- package/src/services/system-user.js +1 -1
- package/src/services/system-user.js.map +1 -1
- package/src/services/user.d.ts +30 -24
- package/src/services/user.d.ts.map +1 -1
- package/src/services/user.js +34 -21
- package/src/services/user.js.map +1 -1
- package/src/transactions/transaction-manager.d.ts.map +1 -1
- package/src/transactions/transaction-manager.js +1 -1
- package/src/transactions/transaction-manager.js.map +1 -1
- package/src/types/environment-variables.d.ts +31 -0
- package/src/types/environment-variables.d.ts.map +1 -0
- package/src/types/environment-variables.js +39 -0
- package/src/types/environment-variables.js.map +1 -0
- package/src/types/id-converters.d.ts +28 -0
- package/src/types/id-converters.d.ts.map +1 -0
- package/src/types/id-converters.js +45 -0
- package/src/types/id-converters.js.map +1 -0
- package/src/types/mongoose-helpers.d.ts +11 -0
- package/src/types/mongoose-helpers.d.ts.map +1 -0
- package/src/types/mongoose-helpers.js +6 -0
- package/src/types/mongoose-helpers.js.map +1 -0
- package/src/utils.d.ts +2 -2
- package/src/utils.d.ts.map +1 -1
- package/src/utils.js +15 -6
- package/src/utils.js.map +1 -1
|
@@ -11,7 +11,7 @@ import { BackupCodeService } from './backup-code';
|
|
|
11
11
|
import { MnemonicService } from './mnemonic';
|
|
12
12
|
import { RoleService } from './role';
|
|
13
13
|
export declare abstract class DatabaseInitializationService {
|
|
14
|
-
protected static initializationPromises: Map<string, Promise<IFailableResult<IServerInitResult
|
|
14
|
+
protected static initializationPromises: Map<string, Promise<IFailableResult<IServerInitResult<Types.ObjectId>>>>;
|
|
15
15
|
protected static initializationLock: Map<string, boolean>;
|
|
16
16
|
protected static defaultI18nTFunc(str: string, variables?: Record<string, any>, language?: string, application?: IApplication): string;
|
|
17
17
|
/**
|
|
@@ -29,7 +29,7 @@ export declare abstract class DatabaseInitializationService {
|
|
|
29
29
|
* @param id The user ID
|
|
30
30
|
* @returns The generated cache key
|
|
31
31
|
*/
|
|
32
|
-
static cacheKey(username: string, email: EmailString, mnemonic: SecureString, id:
|
|
32
|
+
static cacheKey<I extends Types.ObjectId | string = Types.ObjectId>(username: string, email: EmailString, mnemonic: SecureString, id: I, idToString?: (id: I) => string): string;
|
|
33
33
|
/**
|
|
34
34
|
* Get a cached BackendMember or create a new one if not cached
|
|
35
35
|
* @param username The username
|
|
@@ -41,8 +41,8 @@ export declare abstract class DatabaseInitializationService {
|
|
|
41
41
|
* @param createdBy Optional ID of the user who created this member
|
|
42
42
|
* @returns The cached or newly created BackendMember and the mnemonic used
|
|
43
43
|
*/
|
|
44
|
-
static cacheOrNew(username: string, email: EmailString, mnemonic: SecureString | undefined, memberType: MemberType, eciesService: ECIESService, memberId?:
|
|
45
|
-
member: BackendMember
|
|
44
|
+
static cacheOrNew<I extends Types.ObjectId | string = Types.ObjectId>(username: string, email: EmailString, mnemonic: SecureString | undefined, memberType: MemberType, eciesService: ECIESService, memberId?: I, createdBy?: I, idGenerator?: () => I, idToString?: (id: I) => string): {
|
|
45
|
+
member: BackendMember<I>;
|
|
46
46
|
mnemonic: SecureString;
|
|
47
47
|
};
|
|
48
48
|
/**
|
|
@@ -57,27 +57,27 @@ export declare abstract class DatabaseInitializationService {
|
|
|
57
57
|
* @returns True if the database was dropped, false if not connected
|
|
58
58
|
*/
|
|
59
59
|
static dropDatabase(connection: Connection): Promise<boolean>;
|
|
60
|
-
static getInitOptions(application: IApplication): {
|
|
61
|
-
adminId?:
|
|
60
|
+
static getInitOptions<I extends Types.ObjectId | string = Types.ObjectId>(application: IApplication): {
|
|
61
|
+
adminId?: I;
|
|
62
62
|
adminMnemonic?: SecureString;
|
|
63
63
|
adminPassword?: SecureString;
|
|
64
|
-
adminRoleId?:
|
|
65
|
-
adminUserRoleId?:
|
|
64
|
+
adminRoleId?: I;
|
|
65
|
+
adminUserRoleId?: I;
|
|
66
66
|
adminBackupCodes?: BackupCode[];
|
|
67
|
-
memberId?:
|
|
67
|
+
memberId?: I;
|
|
68
68
|
memberMnemonic?: SecureString;
|
|
69
69
|
memberPassword?: SecureString;
|
|
70
|
-
memberRoleId?:
|
|
71
|
-
memberUserRoleId?:
|
|
70
|
+
memberRoleId?: I;
|
|
71
|
+
memberUserRoleId?: I;
|
|
72
72
|
memberBackupCodes?: BackupCode[];
|
|
73
|
-
systemId?:
|
|
73
|
+
systemId?: I;
|
|
74
74
|
systemMnemonic?: SecureString;
|
|
75
75
|
systemPassword?: SecureString;
|
|
76
|
-
systemRoleId?:
|
|
77
|
-
systemUserRoleId?:
|
|
76
|
+
systemRoleId?: I;
|
|
77
|
+
systemUserRoleId?: I;
|
|
78
78
|
systemBackupCodes?: BackupCode[];
|
|
79
79
|
};
|
|
80
|
-
static serverInitResultHash(serverInitResult: IServerInitResult): string;
|
|
80
|
+
static serverInitResultHash<I extends Types.ObjectId | string = Types.ObjectId>(serverInitResult: IServerInitResult<I>, idToString?: (id: I) => string): string;
|
|
81
81
|
/**
|
|
82
82
|
* Initialize the user database with default users and roles (with dependency injection)
|
|
83
83
|
* @param application The application
|
|
@@ -88,16 +88,16 @@ export declare abstract class DatabaseInitializationService {
|
|
|
88
88
|
* @param backupCodeService The backup code service
|
|
89
89
|
* @returns The result of the initialization
|
|
90
90
|
*/
|
|
91
|
-
static initUserDbWithServices(application: IApplication, keyWrappingService: KeyWrappingService, mnemonicService: MnemonicService
|
|
92
|
-
static serverInitResultsToDotEnv(
|
|
93
|
-
static printServerInitResults(result: IServerInitResult
|
|
94
|
-
static setEnvFromInitResults(result: IServerInitResult): void;
|
|
91
|
+
static initUserDbWithServices<I extends Types.ObjectId | string = Types.ObjectId>(application: IApplication, keyWrappingService: KeyWrappingService, mnemonicService: MnemonicService<I>, eciesService: ECIESService, roleService: RoleService<I>, backupCodeService: BackupCodeService<I>, idGenerator?: () => I, idToString?: (id: I) => string): Promise<IDBInitResult<IServerInitResult<I>>>;
|
|
92
|
+
static serverInitResultsToDotEnv<I extends Types.ObjectId | string = Types.ObjectId>(serverInitResult: IServerInitResult<I>, idToString?: (id: I) => string): string;
|
|
93
|
+
static printServerInitResults<I extends Types.ObjectId | string = Types.ObjectId>(result: IServerInitResult<I>, printDotEnv?: boolean, idToString?: (id: I) => string): void;
|
|
94
|
+
static setEnvFromInitResults<I extends Types.ObjectId | string = Types.ObjectId>(result: IServerInitResult<I>, idToString?: (id: I) => string): void;
|
|
95
95
|
/**
|
|
96
96
|
* Initialize the user database with default users and roles (convenience method)
|
|
97
97
|
* This method creates the necessary services and calls initUserDbWithServices
|
|
98
98
|
* @param application The application
|
|
99
99
|
* @returns The result of the initialization
|
|
100
100
|
*/
|
|
101
|
-
static initUserDb(application: IApplication): Promise<IFailableResult<IServerInitResult
|
|
101
|
+
static initUserDb<I extends Types.ObjectId | string = Types.ObjectId>(application: IApplication, idGenerator?: () => I, idToString?: (id: I) => string): Promise<IFailableResult<IServerInitResult<I>>>;
|
|
102
102
|
}
|
|
103
103
|
//# sourceMappingURL=database-initialization.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-initialization.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/database-initialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAEX,UAAU,EAEV,YAAY,EACb,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"database-initialization.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-node-express-suite/src/services/database-initialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,11 +8,11 @@ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
|
8
8
|
const crc_1 = require("crc");
|
|
9
9
|
const crypto_1 = require("crypto");
|
|
10
10
|
const mongodb_1 = require("mongodb");
|
|
11
|
-
const mongoose_1 = require("mongoose");
|
|
12
11
|
const backup_code_1 = require("../backup-code");
|
|
13
12
|
const base_model_name_1 = require("../enumerations/base-model-name");
|
|
14
13
|
const model_registry_1 = require("../model-registry");
|
|
15
14
|
const key_wrapping_1 = require("../services/key-wrapping");
|
|
15
|
+
const id_converters_1 = require("../types/id-converters");
|
|
16
16
|
const utils_1 = require("../utils");
|
|
17
17
|
const backup_code_2 = require("./backup-code");
|
|
18
18
|
const mnemonic_1 = require("./mnemonic");
|
|
@@ -45,8 +45,8 @@ class DatabaseInitializationService {
|
|
|
45
45
|
* @param id The user ID
|
|
46
46
|
* @returns The generated cache key
|
|
47
47
|
*/
|
|
48
|
-
static cacheKey(username, email, mnemonic, id) {
|
|
49
|
-
const combined = `${username}|${email.email}|${mnemonic.value}|${id
|
|
48
|
+
static cacheKey(username, email, mnemonic, id, idToString = (id) => String(id)) {
|
|
49
|
+
const combined = `${username}|${email.email}|${mnemonic.value}|${idToString(id)}`;
|
|
50
50
|
const buffer = Buffer.from(combined, 'utf-8');
|
|
51
51
|
const crcHash = (0, crc_1.crc32)(buffer);
|
|
52
52
|
return crcHash.toString(16).padStart(8, '0');
|
|
@@ -62,10 +62,14 @@ class DatabaseInitializationService {
|
|
|
62
62
|
* @param createdBy Optional ID of the user who created this member
|
|
63
63
|
* @returns The cached or newly created BackendMember and the mnemonic used
|
|
64
64
|
*/
|
|
65
|
-
static cacheOrNew(username, email, mnemonic, memberType, eciesService, memberId, createdBy) {
|
|
65
|
+
static cacheOrNew(username, email, mnemonic, memberType, eciesService, memberId, createdBy, idGenerator, idToString = (id) => String(id)) {
|
|
66
66
|
const m = this.mnemonicOrNew(mnemonic, eciesService);
|
|
67
|
-
const newId = memberId
|
|
68
|
-
|
|
67
|
+
const newId = memberId
|
|
68
|
+
? memberId
|
|
69
|
+
: idGenerator
|
|
70
|
+
? idGenerator()
|
|
71
|
+
: (0, id_converters_1.convertObjectIdToGenericId)(new mongodb_1.ObjectId());
|
|
72
|
+
const key = DatabaseInitializationService.cacheKey(username, email, m, newId, idToString);
|
|
69
73
|
if (!global.__MEMBER_CACHE__) {
|
|
70
74
|
global.__MEMBER_CACHE__ = new Map();
|
|
71
75
|
}
|
|
@@ -133,86 +137,63 @@ class DatabaseInitializationService {
|
|
|
133
137
|
return connection.db.dropDatabase();
|
|
134
138
|
}
|
|
135
139
|
static getInitOptions(application) {
|
|
140
|
+
const env = application.environment;
|
|
136
141
|
return {
|
|
137
|
-
adminId:
|
|
138
|
-
|
|
142
|
+
adminId: env.adminId,
|
|
143
|
+
adminMnemonic: env.adminMnemonic?.hasValue
|
|
144
|
+
? env.adminMnemonic
|
|
139
145
|
: undefined,
|
|
140
|
-
|
|
141
|
-
?
|
|
146
|
+
adminPassword: env.adminPassword?.hasValue
|
|
147
|
+
? env.adminPassword
|
|
142
148
|
: undefined,
|
|
143
|
-
|
|
144
|
-
|
|
149
|
+
adminRoleId: env.adminRoleId,
|
|
150
|
+
adminUserRoleId: env.adminUserRoleId,
|
|
151
|
+
adminBackupCodes: env.adminBackupCodes,
|
|
152
|
+
memberId: env.memberId,
|
|
153
|
+
memberMnemonic: env.memberMnemonic?.hasValue
|
|
154
|
+
? env.memberMnemonic
|
|
145
155
|
: undefined,
|
|
146
|
-
|
|
147
|
-
?
|
|
156
|
+
memberPassword: env.memberPassword?.hasValue
|
|
157
|
+
? env.memberPassword
|
|
148
158
|
: undefined,
|
|
149
|
-
|
|
150
|
-
|
|
159
|
+
memberRoleId: env.memberRoleId,
|
|
160
|
+
memberUserRoleId: env.memberUserRoleId,
|
|
161
|
+
memberBackupCodes: env.memberBackupCodes,
|
|
162
|
+
systemId: env.systemId,
|
|
163
|
+
systemMnemonic: env.systemMnemonic?.hasValue
|
|
164
|
+
? env.systemMnemonic
|
|
151
165
|
: undefined,
|
|
152
|
-
|
|
153
|
-
?
|
|
154
|
-
: undefined,
|
|
155
|
-
memberId: application.environment.memberId
|
|
156
|
-
? application.environment.memberId
|
|
157
|
-
: undefined,
|
|
158
|
-
memberMnemonic: application.environment.memberMnemonic?.hasValue
|
|
159
|
-
? application.environment.memberMnemonic
|
|
160
|
-
: undefined,
|
|
161
|
-
memberPassword: application.environment.memberPassword?.hasValue
|
|
162
|
-
? application.environment.memberPassword
|
|
163
|
-
: undefined,
|
|
164
|
-
memberRoleId: application.environment.memberRoleId
|
|
165
|
-
? application.environment.memberRoleId
|
|
166
|
-
: undefined,
|
|
167
|
-
memberUserRoleId: application.environment.memberUserRoleId
|
|
168
|
-
? application.environment.memberUserRoleId
|
|
169
|
-
: undefined,
|
|
170
|
-
memberBackupCodes: application.environment.memberBackupCodes
|
|
171
|
-
? application.environment.memberBackupCodes
|
|
172
|
-
: undefined,
|
|
173
|
-
systemId: application.environment.systemId
|
|
174
|
-
? application.environment.systemId
|
|
175
|
-
: undefined,
|
|
176
|
-
systemMnemonic: application.environment.systemMnemonic?.hasValue
|
|
177
|
-
? application.environment.systemMnemonic
|
|
178
|
-
: undefined,
|
|
179
|
-
systemPassword: application.environment.systemPassword?.hasValue
|
|
180
|
-
? application.environment.systemPassword
|
|
181
|
-
: undefined,
|
|
182
|
-
systemRoleId: application.environment.systemRoleId
|
|
183
|
-
? application.environment.systemRoleId
|
|
184
|
-
: undefined,
|
|
185
|
-
systemUserRoleId: application.environment.systemUserRoleId
|
|
186
|
-
? application.environment.systemUserRoleId
|
|
187
|
-
: undefined,
|
|
188
|
-
systemBackupCodes: application.environment.systemBackupCodes
|
|
189
|
-
? application.environment.systemBackupCodes
|
|
166
|
+
systemPassword: env.systemPassword?.hasValue
|
|
167
|
+
? env.systemPassword
|
|
190
168
|
: undefined,
|
|
169
|
+
systemRoleId: env.systemRoleId,
|
|
170
|
+
systemUserRoleId: env.systemUserRoleId,
|
|
171
|
+
systemBackupCodes: env.systemBackupCodes,
|
|
191
172
|
};
|
|
192
173
|
}
|
|
193
|
-
static serverInitResultHash(serverInitResult) {
|
|
174
|
+
static serverInitResultHash(serverInitResult, idToString = (id) => String(id)) {
|
|
194
175
|
const h = (0, crypto_1.createHash)('sha256');
|
|
195
|
-
h.update(serverInitResult.adminUser._id
|
|
196
|
-
h.update(serverInitResult.adminRole._id
|
|
197
|
-
h.update(serverInitResult.adminUserRole._id
|
|
176
|
+
h.update(idToString(serverInitResult.adminUser._id));
|
|
177
|
+
h.update(idToString(serverInitResult.adminRole._id));
|
|
178
|
+
h.update(idToString(serverInitResult.adminUserRole._id));
|
|
198
179
|
h.update(serverInitResult.adminUsername);
|
|
199
180
|
h.update(serverInitResult.adminEmail);
|
|
200
181
|
h.update(serverInitResult.adminMnemonic);
|
|
201
182
|
h.update(serverInitResult.adminPassword);
|
|
202
183
|
h.update(serverInitResult.adminUser.publicKey);
|
|
203
184
|
serverInitResult.adminBackupCodes.map((bc) => h.update(bc));
|
|
204
|
-
h.update(serverInitResult.memberUser._id
|
|
205
|
-
h.update(serverInitResult.memberRole._id
|
|
206
|
-
h.update(serverInitResult.memberUserRole._id
|
|
185
|
+
h.update(idToString(serverInitResult.memberUser._id));
|
|
186
|
+
h.update(idToString(serverInitResult.memberRole._id));
|
|
187
|
+
h.update(idToString(serverInitResult.memberUserRole._id));
|
|
207
188
|
h.update(serverInitResult.memberUsername);
|
|
208
189
|
h.update(serverInitResult.memberEmail);
|
|
209
190
|
h.update(serverInitResult.memberMnemonic);
|
|
210
191
|
h.update(serverInitResult.memberPassword);
|
|
211
192
|
h.update(serverInitResult.memberUser.publicKey);
|
|
212
193
|
serverInitResult.memberBackupCodes.map((bc) => h.update(bc));
|
|
213
|
-
h.update(serverInitResult.systemUser._id
|
|
214
|
-
h.update(serverInitResult.systemRole._id
|
|
215
|
-
h.update(serverInitResult.systemUserRole._id
|
|
194
|
+
h.update(idToString(serverInitResult.systemUser._id));
|
|
195
|
+
h.update(idToString(serverInitResult.systemRole._id));
|
|
196
|
+
h.update(idToString(serverInitResult.systemUserRole._id));
|
|
216
197
|
h.update(serverInitResult.systemUsername);
|
|
217
198
|
h.update(serverInitResult.systemEmail);
|
|
218
199
|
h.update(serverInitResult.systemMnemonic);
|
|
@@ -231,21 +212,23 @@ class DatabaseInitializationService {
|
|
|
231
212
|
* @param backupCodeService The backup code service
|
|
232
213
|
* @returns The result of the initialization
|
|
233
214
|
*/
|
|
234
|
-
static async initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService) {
|
|
215
|
+
static async initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService, idGenerator, idToString = (id) => application.constants.idProvider.idToString(id)) {
|
|
235
216
|
const engine = (0, suite_core_lib_1.getSuiteCoreI18nEngine)({ constants: application.constants });
|
|
236
217
|
const isTestEnvironment = process.env['NODE_ENV'] === 'test';
|
|
237
218
|
const options = DatabaseInitializationService.getInitOptions(application);
|
|
219
|
+
const effectiveIdGenerator = (idGenerator ??
|
|
220
|
+
(() => application.environment.idAdapter(application.constants.idProvider.generate())));
|
|
238
221
|
const UserModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.User);
|
|
239
222
|
const RoleModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.Role);
|
|
240
|
-
const adminUserId = options.adminId ??
|
|
241
|
-
const adminRoleId = options.adminRoleId ??
|
|
242
|
-
const adminUserRoleId = options.adminUserRoleId ??
|
|
243
|
-
const memberUserId = options.memberId ??
|
|
244
|
-
const memberRoleId = options.memberRoleId ??
|
|
245
|
-
const memberUserRoleId = options.memberUserRoleId ??
|
|
246
|
-
const systemUserId = options.systemId ??
|
|
247
|
-
const systemRoleId = options.systemRoleId ??
|
|
248
|
-
const systemUserRoleId = options.systemUserRoleId ??
|
|
223
|
+
const adminUserId = options.adminId ?? effectiveIdGenerator();
|
|
224
|
+
const adminRoleId = options.adminRoleId ?? effectiveIdGenerator();
|
|
225
|
+
const adminUserRoleId = options.adminUserRoleId ?? effectiveIdGenerator();
|
|
226
|
+
const memberUserId = options.memberId ?? effectiveIdGenerator();
|
|
227
|
+
const memberRoleId = options.memberRoleId ?? effectiveIdGenerator();
|
|
228
|
+
const memberUserRoleId = options.memberUserRoleId ?? effectiveIdGenerator();
|
|
229
|
+
const systemUserId = options.systemId ?? effectiveIdGenerator();
|
|
230
|
+
const systemRoleId = options.systemRoleId ?? effectiveIdGenerator();
|
|
231
|
+
const systemUserRoleId = options.systemUserRoleId ?? effectiveIdGenerator();
|
|
249
232
|
// Check for existing users and roles with optimized queries
|
|
250
233
|
// Use lean() for better performance on read-only operations
|
|
251
234
|
const [existingUsers, existingRoles] = await Promise.all([
|
|
@@ -429,7 +412,7 @@ class DatabaseInitializationService {
|
|
|
429
412
|
}
|
|
430
413
|
systemRole = systemRoleDocs[0];
|
|
431
414
|
}
|
|
432
|
-
const systemUser = DatabaseInitializationService.cacheOrNew(application.constants.SystemUser, new ecies_lib_1.EmailString(application.constants.SystemEmail), options.systemMnemonic, ecies_lib_1.MemberType.System, eciesService,
|
|
415
|
+
const systemUser = DatabaseInitializationService.cacheOrNew(application.constants.SystemUser, new ecies_lib_1.EmailString(application.constants.SystemEmail), options.systemMnemonic, ecies_lib_1.MemberType.System, eciesService, systemUserId, systemUserId, effectiveIdGenerator, idToString);
|
|
433
416
|
backupCodeService.setSystemUser(systemUser.member);
|
|
434
417
|
system_user_1.SystemUserService.setSystemUser(systemUser.member, application.constants);
|
|
435
418
|
// Encrypt mnemonic for recovery
|
|
@@ -484,7 +467,7 @@ class DatabaseInitializationService {
|
|
|
484
467
|
NAME: suite_core_lib_1.SuiteCoreStringKey.Common_System,
|
|
485
468
|
}));
|
|
486
469
|
}
|
|
487
|
-
const adminUser = DatabaseInitializationService.cacheOrNew(application.constants.AdministratorUser, new ecies_lib_1.EmailString(application.constants.AdministratorEmail), options.adminMnemonic, ecies_lib_1.MemberType.User, eciesService,
|
|
470
|
+
const adminUser = DatabaseInitializationService.cacheOrNew(application.constants.AdministratorUser, new ecies_lib_1.EmailString(application.constants.AdministratorEmail), options.adminMnemonic, ecies_lib_1.MemberType.User, eciesService, adminUserId, systemDoc._id, effectiveIdGenerator, idToString);
|
|
488
471
|
// Encrypt mnemonic for recovery
|
|
489
472
|
const adminEncryptedMnemonic = adminUser.member
|
|
490
473
|
.encryptData(Buffer.from(adminUser.mnemonic.value ?? '', 'utf-8'))
|
|
@@ -536,7 +519,7 @@ class DatabaseInitializationService {
|
|
|
536
519
|
NAME: engine.translate(suite_core_lib_1.SuiteCoreComponentId, suite_core_lib_1.SuiteCoreStringKey.Common_Admin),
|
|
537
520
|
}));
|
|
538
521
|
}
|
|
539
|
-
const memberUser = DatabaseInitializationService.cacheOrNew(application.constants.MemberUser, new ecies_lib_1.EmailString(application.constants.MemberEmail), options.memberMnemonic, ecies_lib_1.MemberType.User, eciesService,
|
|
522
|
+
const memberUser = DatabaseInitializationService.cacheOrNew(application.constants.MemberUser, new ecies_lib_1.EmailString(application.constants.MemberEmail), options.memberMnemonic, ecies_lib_1.MemberType.User, eciesService, memberUserId, systemDoc._id, effectiveIdGenerator, idToString);
|
|
540
523
|
const memberPasswordSecure = options.memberPassword
|
|
541
524
|
? options.memberPassword
|
|
542
525
|
: new ecies_lib_1.SecureString(this.generatePassword(16));
|
|
@@ -669,38 +652,38 @@ class DatabaseInitializationService {
|
|
|
669
652
|
};
|
|
670
653
|
}
|
|
671
654
|
}
|
|
672
|
-
static serverInitResultsToDotEnv(
|
|
673
|
-
return `ADMIN_ID="${
|
|
674
|
-
ADMIN_MNEMONIC="${
|
|
675
|
-
ADMIN_ROLE_ID="${
|
|
676
|
-
ADMIN_USER_ROLE_ID="${
|
|
677
|
-
ADMIN_PASSWORD="${
|
|
678
|
-
MEMBER_ID="${
|
|
679
|
-
MEMBER_MNEMONIC="${
|
|
680
|
-
MEMBER_ROLE_ID="${
|
|
681
|
-
MEMBER_USER_ROLE_ID="${
|
|
682
|
-
MEMBER_PASSWORD="${
|
|
683
|
-
SYSTEM_ID="${
|
|
684
|
-
SYSTEM_MNEMONIC="${
|
|
685
|
-
SYSTEM_PUBLIC_KEY="${
|
|
686
|
-
SYSTEM_ROLE_ID="${
|
|
687
|
-
SYSTEM_USER_ROLE_ID="${
|
|
688
|
-
SYSTEM_PASSWORD="${
|
|
655
|
+
static serverInitResultsToDotEnv(serverInitResult, idToString = (id) => String(id)) {
|
|
656
|
+
return `ADMIN_ID="${idToString(serverInitResult.adminUser._id)}"
|
|
657
|
+
ADMIN_MNEMONIC="${serverInitResult.adminMnemonic}"
|
|
658
|
+
ADMIN_ROLE_ID="${idToString(serverInitResult.adminRole._id)}"
|
|
659
|
+
ADMIN_USER_ROLE_ID="${idToString(serverInitResult.adminUserRole._id)}"
|
|
660
|
+
ADMIN_PASSWORD="${serverInitResult.adminPassword}"
|
|
661
|
+
MEMBER_ID="${idToString(serverInitResult.memberUser._id)}"
|
|
662
|
+
MEMBER_MNEMONIC="${serverInitResult.memberMnemonic}"
|
|
663
|
+
MEMBER_ROLE_ID="${idToString(serverInitResult.memberRole._id)}"
|
|
664
|
+
MEMBER_USER_ROLE_ID="${idToString(serverInitResult.memberUserRole._id)}"
|
|
665
|
+
MEMBER_PASSWORD="${serverInitResult.memberPassword}"
|
|
666
|
+
SYSTEM_ID="${idToString(serverInitResult.systemUser._id)}"
|
|
667
|
+
SYSTEM_MNEMONIC="${serverInitResult.systemMnemonic}"
|
|
668
|
+
SYSTEM_PUBLIC_KEY="${serverInitResult.systemUser.publicKey}"
|
|
669
|
+
SYSTEM_ROLE_ID="${idToString(serverInitResult.systemRole._id)}"
|
|
670
|
+
SYSTEM_USER_ROLE_ID="${idToString(serverInitResult.systemUserRole._id)}"
|
|
671
|
+
SYSTEM_PASSWORD="${serverInitResult.systemPassword}"
|
|
689
672
|
`;
|
|
690
673
|
}
|
|
691
|
-
static printServerInitResults(result, printDotEnv = true) {
|
|
674
|
+
static printServerInitResults(result, printDotEnv = true, idToString = (id) => String(id)) {
|
|
692
675
|
(0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('\n=== {{SuiteCoreStringKey.Admin_AccountCredentials}} ==='));
|
|
693
676
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_ID}}: {id}', {
|
|
694
|
-
id: result.systemUser._id
|
|
677
|
+
id: idToString(result.systemUser._id),
|
|
695
678
|
}));
|
|
696
679
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_Role}}: {roleName}', {
|
|
697
680
|
roleName: result.systemRole.name,
|
|
698
681
|
}));
|
|
699
682
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {roleId}', {
|
|
700
|
-
roleId: result.systemRole._id
|
|
683
|
+
roleId: idToString(result.systemRole._id),
|
|
701
684
|
}));
|
|
702
685
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_User}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {userRoleId}', {
|
|
703
|
-
userRoleId: result.systemUserRole._id
|
|
686
|
+
userRoleId: idToString(result.systemUserRole._id),
|
|
704
687
|
}));
|
|
705
688
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_Username}}: {username}', {
|
|
706
689
|
username: result.systemUsername,
|
|
@@ -720,16 +703,16 @@ SYSTEM_PASSWORD="${result.systemPassword}"
|
|
|
720
703
|
(0, utils_1.directLog)(true, 'log', `${this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_System}} {{SuiteCoreStringKey.Common_BackupCodes}}')}: ${result.systemBackupCodes.join(', ')}`);
|
|
721
704
|
(0, utils_1.directLog)(true, 'log', '');
|
|
722
705
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_ID}}: {id}', {
|
|
723
|
-
id: result.adminUser._id
|
|
706
|
+
id: idToString(result.adminUser._id),
|
|
724
707
|
}));
|
|
725
708
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_Role}}: {roleName}', {
|
|
726
709
|
roleName: result.adminRole.name,
|
|
727
710
|
}));
|
|
728
711
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {roleId}', {
|
|
729
|
-
roleId: result.adminRole._id
|
|
712
|
+
roleId: idToString(result.adminRole._id),
|
|
730
713
|
}));
|
|
731
714
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_User}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {userRoleId}', {
|
|
732
|
-
userRoleId: result.adminUserRole._id
|
|
715
|
+
userRoleId: idToString(result.adminUserRole._id),
|
|
733
716
|
}));
|
|
734
717
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_Username}}: {username}', {
|
|
735
718
|
username: result.adminUsername,
|
|
@@ -749,16 +732,16 @@ SYSTEM_PASSWORD="${result.systemPassword}"
|
|
|
749
732
|
(0, utils_1.directLog)(true, 'log', `${this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Admin}} {{SuiteCoreStringKey.Common_BackupCodes}}')}: ${result.adminBackupCodes.join(', ')}`);
|
|
750
733
|
(0, utils_1.directLog)(true, 'log', '');
|
|
751
734
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Member}} {{SuiteCoreStringKey.Common_ID}}: {id}', {
|
|
752
|
-
id: result.memberUser._id
|
|
735
|
+
id: idToString(result.memberUser._id),
|
|
753
736
|
}));
|
|
754
737
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Member}} {{SuiteCoreStringKey.Common_Role}}: {roleName}', {
|
|
755
738
|
roleName: result.memberRole.name,
|
|
756
739
|
}));
|
|
757
740
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Member}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {roleId}', {
|
|
758
|
-
roleId: result.memberRole._id
|
|
741
|
+
roleId: idToString(result.memberRole._id),
|
|
759
742
|
}));
|
|
760
743
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Member}} {{SuiteCoreStringKey.Common_User}} {{SuiteCoreStringKey.Common_Role}} {{SuiteCoreStringKey.Common_ID}}: {userRoleId}', {
|
|
761
|
-
userRoleId: result.memberUserRole._id
|
|
744
|
+
userRoleId: idToString(result.memberUserRole._id),
|
|
762
745
|
}));
|
|
763
746
|
(0, utils_1.directLog)(true, 'log', this.defaultI18nTFunc('{{SuiteCoreStringKey.Common_Member}} {{SuiteCoreStringKey.Common_Username}}: {username}', {
|
|
764
747
|
username: result.memberUsername,
|
|
@@ -780,33 +763,31 @@ SYSTEM_PASSWORD="${result.systemPassword}"
|
|
|
780
763
|
if (printDotEnv) {
|
|
781
764
|
(0, utils_1.directLog)(true, 'log', '');
|
|
782
765
|
(0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('=== {{SuiteCoreStringKey.Admin_DotEnvFormat}} ==='));
|
|
783
|
-
(0, utils_1.directLog)(true, 'log', this.serverInitResultsToDotEnv(result));
|
|
766
|
+
(0, utils_1.directLog)(true, 'log', this.serverInitResultsToDotEnv(result, idToString));
|
|
784
767
|
(0, utils_1.debugLog)(true, 'log', this.defaultI18nTFunc('=== {{SuiteCoreStringKey.Admin_EndDotEnvFormat}} ==='));
|
|
785
768
|
}
|
|
786
769
|
}
|
|
787
|
-
static setEnvFromInitResults(result) {
|
|
788
|
-
process.env['ADMIN_ID'] = result.adminUser._id
|
|
770
|
+
static setEnvFromInitResults(result, idToString = (id) => String(id)) {
|
|
771
|
+
process.env['ADMIN_ID'] = idToString(result.adminUser._id);
|
|
789
772
|
process.env['ADMIN_PUBLIC_KEY'] = result.adminUser.publicKey;
|
|
790
773
|
process.env['ADMIN_MNEMONIC'] = result.adminMnemonic;
|
|
791
774
|
process.env['ADMIN_PASSWORD'] = result.adminPassword;
|
|
792
|
-
process.env['ADMIN_ROLE_ID'] = result.adminRole._id
|
|
793
|
-
process.env['ADMIN_USER_ROLE_ID'] = result.adminUserRole._id
|
|
775
|
+
process.env['ADMIN_ROLE_ID'] = idToString(result.adminRole._id);
|
|
776
|
+
process.env['ADMIN_USER_ROLE_ID'] = idToString(result.adminUserRole._id);
|
|
794
777
|
//
|
|
795
|
-
process.env['MEMBER_ID'] = result.memberUser._id
|
|
778
|
+
process.env['MEMBER_ID'] = idToString(result.memberUser._id);
|
|
796
779
|
process.env['MEMBER_PUBLIC_KEY'] = result.memberUser.publicKey;
|
|
797
780
|
process.env['MEMBER_MNEMONIC'] = result.memberMnemonic;
|
|
798
781
|
process.env['MEMBER_PASSWORD'] = result.memberPassword;
|
|
799
|
-
process.env['MEMBER_ROLE_ID'] = result.memberRole._id
|
|
800
|
-
process.env['MEMBER_USER_ROLE_ID'] =
|
|
801
|
-
result.memberUserRole._id.toHexString();
|
|
782
|
+
process.env['MEMBER_ROLE_ID'] = idToString(result.memberRole._id);
|
|
783
|
+
process.env['MEMBER_USER_ROLE_ID'] = idToString(result.memberUserRole._id);
|
|
802
784
|
//
|
|
803
|
-
process.env['SYSTEM_ID'] = result.systemUser._id
|
|
785
|
+
process.env['SYSTEM_ID'] = idToString(result.systemUser._id);
|
|
804
786
|
process.env['SYSTEM_PUBLIC_KEY'] = result.systemUser.publicKey;
|
|
805
787
|
process.env['SYSTEM_MNEMONIC'] = result.systemMnemonic;
|
|
806
788
|
process.env['SYSTEM_PASSWORD'] = result.systemPassword;
|
|
807
|
-
process.env['SYSTEM_ROLE_ID'] = result.systemRole._id
|
|
808
|
-
process.env['SYSTEM_USER_ROLE_ID'] =
|
|
809
|
-
result.systemUserRole._id.toHexString();
|
|
789
|
+
process.env['SYSTEM_ROLE_ID'] = idToString(result.systemRole._id);
|
|
790
|
+
process.env['SYSTEM_USER_ROLE_ID'] = idToString(result.systemUserRole._id);
|
|
810
791
|
}
|
|
811
792
|
/**
|
|
812
793
|
* Initialize the user database with default users and roles (convenience method)
|
|
@@ -814,7 +795,7 @@ SYSTEM_PASSWORD="${result.systemPassword}"
|
|
|
814
795
|
* @param application The application
|
|
815
796
|
* @returns The result of the initialization
|
|
816
797
|
*/
|
|
817
|
-
static async initUserDb(application) {
|
|
798
|
+
static async initUserDb(application, idGenerator, idToString = (id) => application.constants.idProvider.idToString(id)) {
|
|
818
799
|
const mnemonicModel = model_registry_1.ModelRegistry.instance.getTypedModel(base_model_name_1.BaseModelName.Mnemonic);
|
|
819
800
|
const mnemonicService = new mnemonic_1.MnemonicService(mnemonicModel, application.environment.mnemonicHmacSecret, application.constants);
|
|
820
801
|
const config = {
|
|
@@ -829,7 +810,7 @@ SYSTEM_PASSWORD="${result.systemPassword}"
|
|
|
829
810
|
const roleService = new role_1.RoleService(application);
|
|
830
811
|
const keyWrappingService = new key_wrapping_1.KeyWrappingService();
|
|
831
812
|
const backupCodeService = new backup_code_2.BackupCodeService(application, eciesService, keyWrappingService, roleService);
|
|
832
|
-
return this.initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService);
|
|
813
|
+
return this.initUserDbWithServices(application, keyWrappingService, mnemonicService, eciesService, roleService, backupCodeService, idGenerator, idToString);
|
|
833
814
|
}
|
|
834
815
|
}
|
|
835
816
|
exports.DatabaseInitializationService = DatabaseInitializationService;
|