@volcanicminds/backend 2.3.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/README.md +221 -28
  2. package/dist/index.d.ts +3 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +24 -36
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
  7. package/dist/lib/api/auth/controller/auth.js +14 -7
  8. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  9. package/dist/lib/api/health/controller/health.d.ts +1 -1
  10. package/dist/lib/api/health/controller/health.d.ts.map +1 -1
  11. package/dist/lib/api/health/controller/health.js +1 -1
  12. package/dist/lib/api/health/controller/health.js.map +1 -1
  13. package/dist/lib/api/health/routes.d.ts +1 -0
  14. package/dist/lib/api/health/routes.d.ts.map +1 -1
  15. package/dist/lib/api/health/routes.js +1 -0
  16. package/dist/lib/api/health/routes.js.map +1 -1
  17. package/dist/lib/api/tenants/controller/tenants.d.ts +17 -0
  18. package/dist/lib/api/tenants/controller/tenants.d.ts.map +1 -0
  19. package/dist/lib/api/tenants/controller/tenants.js +150 -0
  20. package/dist/lib/api/tenants/controller/tenants.js.map +1 -0
  21. package/dist/lib/api/tenants/routes.d.ts +167 -0
  22. package/dist/lib/api/tenants/routes.d.ts.map +1 -0
  23. package/dist/lib/api/tenants/routes.js +143 -0
  24. package/dist/lib/api/tenants/routes.js.map +1 -0
  25. package/dist/lib/config/plugins.js +1 -1
  26. package/dist/lib/config/plugins.js.map +1 -1
  27. package/dist/lib/database/typeorm/entities/change.d.ts +11 -0
  28. package/dist/lib/database/typeorm/entities/change.d.ts.map +1 -0
  29. package/dist/lib/database/typeorm/entities/change.js +4 -0
  30. package/dist/lib/database/typeorm/entities/change.js.map +1 -0
  31. package/dist/lib/database/typeorm/entities/tenant.d.ts +13 -0
  32. package/dist/lib/database/typeorm/entities/tenant.d.ts.map +1 -0
  33. package/dist/lib/database/typeorm/entities/tenant.js +4 -0
  34. package/dist/lib/database/typeorm/entities/tenant.js.map +1 -0
  35. package/dist/lib/database/typeorm/entities/token.d.ts +16 -0
  36. package/dist/lib/database/typeorm/entities/token.d.ts.map +1 -0
  37. package/dist/lib/database/typeorm/entities/token.js +4 -0
  38. package/dist/lib/database/typeorm/entities/token.js.map +1 -0
  39. package/dist/lib/database/typeorm/entities/user.d.ts +28 -0
  40. package/dist/lib/database/typeorm/entities/user.d.ts.map +1 -0
  41. package/dist/lib/database/typeorm/entities/user.js +4 -0
  42. package/dist/lib/database/typeorm/entities/user.js.map +1 -0
  43. package/dist/lib/database/typeorm/loader/dataBaseManager.d.ts +6 -0
  44. package/dist/lib/database/typeorm/loader/dataBaseManager.d.ts.map +1 -0
  45. package/dist/lib/database/typeorm/loader/dataBaseManager.js +73 -0
  46. package/dist/lib/database/typeorm/loader/dataBaseManager.js.map +1 -0
  47. package/dist/lib/database/typeorm/loader/entities.d.ts +6 -0
  48. package/dist/lib/database/typeorm/loader/entities.d.ts.map +1 -0
  49. package/dist/lib/database/typeorm/loader/entities.js +37 -0
  50. package/dist/lib/database/typeorm/loader/entities.js.map +1 -0
  51. package/dist/lib/database/typeorm/loader/tenantManager.d.ts +17 -0
  52. package/dist/lib/database/typeorm/loader/tenantManager.d.ts.map +1 -0
  53. package/dist/lib/database/typeorm/loader/tenantManager.js +193 -0
  54. package/dist/lib/database/typeorm/loader/tenantManager.js.map +1 -0
  55. package/dist/lib/database/typeorm/loader/tokenManager.d.ts +23 -0
  56. package/dist/lib/database/typeorm/loader/tokenManager.d.ts.map +1 -0
  57. package/dist/lib/database/typeorm/loader/tokenManager.js +131 -0
  58. package/dist/lib/database/typeorm/loader/tokenManager.js.map +1 -0
  59. package/dist/lib/database/typeorm/loader/userManager.d.ts +39 -0
  60. package/dist/lib/database/typeorm/loader/userManager.d.ts.map +1 -0
  61. package/dist/lib/database/typeorm/loader/userManager.js +358 -0
  62. package/dist/lib/database/typeorm/loader/userManager.js.map +1 -0
  63. package/dist/lib/database/typeorm/query/builder.d.ts +2 -0
  64. package/dist/lib/database/typeorm/query/builder.d.ts.map +1 -0
  65. package/dist/lib/database/typeorm/query/builder.js +33 -0
  66. package/dist/lib/database/typeorm/query/builder.js.map +1 -0
  67. package/dist/lib/database/typeorm/query/parser.d.ts +2 -0
  68. package/dist/lib/database/typeorm/query/parser.d.ts.map +1 -0
  69. package/dist/lib/database/typeorm/query/parser.js +27 -0
  70. package/dist/lib/database/typeorm/query/parser.js.map +1 -0
  71. package/dist/lib/database/typeorm/query.d.ts +36 -0
  72. package/dist/lib/database/typeorm/query.d.ts.map +1 -0
  73. package/dist/lib/database/typeorm/query.js +259 -0
  74. package/dist/lib/database/typeorm/query.js.map +1 -0
  75. package/dist/lib/database/typeorm/util/crypto.d.ts +3 -0
  76. package/dist/lib/database/typeorm/util/crypto.d.ts.map +1 -0
  77. package/dist/lib/database/typeorm/util/crypto.js +46 -0
  78. package/dist/lib/database/typeorm/util/crypto.js.map +1 -0
  79. package/dist/lib/database/typeorm/util/error.d.ts +5 -0
  80. package/dist/lib/database/typeorm/util/error.d.ts.map +1 -0
  81. package/dist/lib/database/typeorm/util/error.js +8 -0
  82. package/dist/lib/database/typeorm/util/error.js.map +1 -0
  83. package/dist/lib/database/typeorm/util/logger.d.ts +7 -0
  84. package/dist/lib/database/typeorm/util/logger.d.ts.map +1 -0
  85. package/dist/lib/database/typeorm/util/logger.js +31 -0
  86. package/dist/lib/database/typeorm/util/logger.js.map +1 -0
  87. package/dist/lib/database/typeorm/util/yn.d.ts +2 -0
  88. package/dist/lib/database/typeorm/util/yn.d.ts.map +1 -0
  89. package/dist/lib/database/typeorm/util/yn.js +15 -0
  90. package/dist/lib/database/typeorm/util/yn.js.map +1 -0
  91. package/dist/lib/defaults/managers.d.ts.map +1 -1
  92. package/dist/lib/defaults/managers.js +186 -58
  93. package/dist/lib/defaults/managers.js.map +1 -1
  94. package/dist/lib/hooks/onRequest.d.ts.map +1 -1
  95. package/dist/lib/hooks/onRequest.js +11 -48
  96. package/dist/lib/hooks/onRequest.js.map +1 -1
  97. package/dist/lib/loader/router.d.ts.map +1 -1
  98. package/dist/lib/loader/router.js +92 -83
  99. package/dist/lib/loader/router.js.map +1 -1
  100. package/dist/lib/loader/tenant.d.ts.map +1 -1
  101. package/dist/lib/loader/tenant.js +18 -1
  102. package/dist/lib/loader/tenant.js.map +1 -1
  103. package/dist/lib/locales/en.json +12 -0
  104. package/dist/lib/locales/it.json +12 -0
  105. package/dist/lib/schemas/tenant.d.ts +88 -0
  106. package/dist/lib/schemas/tenant.d.ts.map +1 -0
  107. package/dist/lib/schemas/tenant.js +45 -0
  108. package/dist/lib/schemas/tenant.js.map +1 -0
  109. package/dist/lib/util/regexp.d.ts +2 -0
  110. package/dist/lib/util/regexp.d.ts.map +1 -1
  111. package/dist/lib/util/regexp.js +5 -3
  112. package/dist/lib/util/regexp.js.map +1 -1
  113. package/dist/lib/util/secret.d.ts +11 -0
  114. package/dist/lib/util/secret.d.ts.map +1 -0
  115. package/dist/lib/util/secret.js +70 -0
  116. package/dist/lib/util/secret.js.map +1 -0
  117. package/dist/server.js +4 -1
  118. package/dist/server.js.map +1 -1
  119. package/dist/typeorm.d.ts +15 -0
  120. package/dist/typeorm.d.ts.map +1 -0
  121. package/dist/typeorm.js +86 -0
  122. package/dist/typeorm.js.map +1 -0
  123. package/dist/types/database/typeorm/global.d.ts +56 -0
  124. package/dist/types/database/typeorm/global.d.ts.map +1 -0
  125. package/dist/types/database/typeorm/global.js +2 -0
  126. package/dist/types/database/typeorm/global.js.map +1 -0
  127. package/dist/types/global.d.ts +318 -0
  128. package/dist/types/orm.d.ts +22 -0
  129. package/lib/api/auth/controller/auth.ts +28 -12
  130. package/lib/api/health/controller/health.ts +1 -1
  131. package/lib/api/health/routes.ts +1 -0
  132. package/lib/api/tenants/controller/tenants.ts +211 -0
  133. package/lib/api/tenants/routes.ts +145 -0
  134. package/lib/config/plugins.ts +1 -1
  135. package/lib/database/typeorm/entities/change.ts +11 -0
  136. package/lib/database/typeorm/entities/tenant.ts +20 -0
  137. package/lib/database/typeorm/entities/token.ts +18 -0
  138. package/lib/database/typeorm/entities/user.ts +33 -0
  139. package/lib/database/typeorm/loader/dataBaseManager.ts +89 -0
  140. package/lib/database/typeorm/loader/entities.ts +47 -0
  141. package/lib/database/typeorm/loader/tenantManager.ts +260 -0
  142. package/lib/database/typeorm/loader/tokenManager.ts +157 -0
  143. package/lib/database/typeorm/loader/userManager.ts +432 -0
  144. package/lib/database/typeorm/query/builder.ts +39 -0
  145. package/lib/database/typeorm/query/parser.ts +29 -0
  146. package/lib/database/typeorm/query.ts +326 -0
  147. package/lib/database/typeorm/util/crypto.ts +52 -0
  148. package/lib/database/typeorm/util/error.ts +7 -0
  149. package/lib/database/typeorm/util/logger.ts +35 -0
  150. package/lib/database/typeorm/util/yn.ts +20 -0
  151. package/lib/defaults/managers.ts +191 -64
  152. package/lib/hooks/onRequest.ts +12 -64
  153. package/lib/loader/router.ts +138 -112
  154. package/lib/loader/tenant.ts +29 -13
  155. package/lib/schemas/tenant.ts +49 -0
  156. package/lib/util/regexp.ts +31 -8
  157. package/lib/util/secret.ts +113 -0
  158. package/package.json +56 -15
  159. package/dist/lib/apollo/context.d.ts +0 -6
  160. package/dist/lib/apollo/context.d.ts.map +0 -1
  161. package/dist/lib/apollo/context.js +0 -5
  162. package/dist/lib/apollo/context.js.map +0 -1
  163. package/dist/lib/apollo/resolvers.d.ts +0 -8
  164. package/dist/lib/apollo/resolvers.d.ts.map +0 -1
  165. package/dist/lib/apollo/resolvers.js +0 -8
  166. package/dist/lib/apollo/resolvers.js.map +0 -1
  167. package/dist/lib/apollo/type-defs.d.ts +0 -3
  168. package/dist/lib/apollo/type-defs.d.ts.map +0 -1
  169. package/dist/lib/apollo/type-defs.js +0 -8
  170. package/dist/lib/apollo/type-defs.js.map +0 -1
  171. package/lib/apollo/context.ts +0 -11
  172. package/lib/apollo/resolvers.ts +0 -12
  173. package/lib/apollo/type-defs.ts +0 -9
@@ -0,0 +1,193 @@
1
+ import { DataSource } from 'typeorm';
2
+ export class TenantManager {
3
+ dataSource;
4
+ constructor(dataSource) {
5
+ this.dataSource = dataSource;
6
+ }
7
+ isImplemented() {
8
+ return true;
9
+ }
10
+ async resolveTenant(req) {
11
+ const { multi_tenant } = global.config?.options || {};
12
+ const headerKey = multi_tenant?.header_key || 'x-tenant-id';
13
+ if (!multi_tenant?.enabled) {
14
+ return null;
15
+ }
16
+ const jwtTid = req.user?.tid;
17
+ const headerTid = req.headers[headerKey];
18
+ if (!headerTid) {
19
+ if (global.log?.d)
20
+ global.log.debug('[TenantManager] No tenant header found');
21
+ return null;
22
+ }
23
+ if (jwtTid && jwtTid !== headerTid) {
24
+ if (global.log?.w)
25
+ global.log.warn(`[TenantManager] Tenant spoofing blocked: Token(${jwtTid}) vs Header(${headerTid})`);
26
+ return null;
27
+ }
28
+ const tenantId = jwtTid || headerTid;
29
+ const tenantRepo = this.dataSource.getRepository('Tenant');
30
+ const tenant = (await tenantRepo.findOne({
31
+ where: [{ slug: tenantId }]
32
+ }));
33
+ if (!tenant) {
34
+ if (global.log?.d)
35
+ global.log.debug(`[TenantManager] Tenant ${tenantId} not found in DB`);
36
+ return null;
37
+ }
38
+ if (tenant.status !== 'active') {
39
+ if (global.log?.d)
40
+ global.log.debug(`[TenantManager] Tenant ${tenantId} is not active`);
41
+ return null;
42
+ }
43
+ return tenant;
44
+ }
45
+ async switchContext(tenant, db) {
46
+ const driver = this.dataSource.driver.options.type;
47
+ if (driver === 'postgres') {
48
+ const schema = tenant.dbSchema || 'public';
49
+ const safeSchema = schema.replace(/[^a-z0-9_]/gi, '');
50
+ if (db) {
51
+ if (global.log?.t)
52
+ global.log.trace(`[TenantManager] Context-Aware Switch Schema to: ${safeSchema}`);
53
+ await db.query(`SET search_path TO "${safeSchema}", public`);
54
+ }
55
+ else {
56
+ const errorMsg = '[TenantManager] ⛔️ CRITICAL: Attempted UNSAFE global context switch without QueryRunner. This operation has been blocked to prevent data leaks.';
57
+ if (global.log?.f)
58
+ global.log.fatal(errorMsg);
59
+ throw new Error(errorMsg);
60
+ }
61
+ }
62
+ else if (driver === 'mongodb') {
63
+ if (global.log?.w)
64
+ global.log.warn('[TenantManager] Mongo Multi-Tenancy context switch is not enforcing isolation yet.');
65
+ }
66
+ }
67
+ async createTenant(data) {
68
+ const driver = this.dataSource.driver.options.type;
69
+ const repo = this.dataSource.getRepository('Tenant');
70
+ if (data.slug)
71
+ data.slug = data.slug.toLowerCase();
72
+ const existing = await repo.findOne({
73
+ where: [{ slug: data.slug }, { dbSchema: data.dbSchema }]
74
+ });
75
+ if (existing) {
76
+ throw new Error('Tenant with this slug or dbSchema already exists');
77
+ }
78
+ const tenant = repo.create({
79
+ ...data,
80
+ status: 'active'
81
+ });
82
+ const savedTenant = (await repo.save(tenant));
83
+ if (driver === 'postgres') {
84
+ const schema = data.dbSchema;
85
+ if (!schema)
86
+ throw new Error('dbSchema is required for Postgres Multi-Tenancy');
87
+ const safeSchema = schema.replace(/[^a-z0-9_]/gi, '');
88
+ const qr = this.dataSource.createQueryRunner();
89
+ await qr.connect();
90
+ try {
91
+ await qr.query(`CREATE SCHEMA IF NOT EXISTS "${safeSchema}"`);
92
+ if (global.log?.i)
93
+ global.log.info(`[TenantManager] Synchronizing tables for schema: ${safeSchema}`);
94
+ const tenantDs = new DataSource({
95
+ ...this.dataSource.options,
96
+ schema: safeSchema,
97
+ synchronize: true,
98
+ name: `sync_${safeSchema}_${Date.now()}`
99
+ });
100
+ await tenantDs.initialize();
101
+ await tenantDs.destroy();
102
+ if (global.log?.i)
103
+ global.log.info(`[TenantManager] Schema ${safeSchema} synchronized successfully`);
104
+ await qr.startTransaction();
105
+ await qr.query(`SET LOCAL search_path TO "${safeSchema}", public`);
106
+ if (data.adminEmail && data.adminPassword) {
107
+ if (global.log?.i)
108
+ global.log.info(`[TenantManager] Seeding Admin User: ${data.adminEmail}`);
109
+ const { createUser } = await import('./userManager.js');
110
+ await createUser({
111
+ email: data.adminEmail,
112
+ password: data.adminPassword,
113
+ roles: ['admin'],
114
+ firstName: data.adminFirstName || 'Tenant',
115
+ lastName: data.adminLastName || 'Admin'
116
+ }, qr);
117
+ }
118
+ await qr.commitTransaction();
119
+ if (global.log?.i)
120
+ global.log.info(`[TenantManager] Created Schema & Admin: ${safeSchema}`);
121
+ }
122
+ catch (err) {
123
+ if (qr.isTransactionActive) {
124
+ await qr.rollbackTransaction();
125
+ }
126
+ throw err;
127
+ }
128
+ finally {
129
+ try {
130
+ await qr.query(`SET search_path TO public`);
131
+ }
132
+ catch (cleanupErr) {
133
+ if (global.log?.e)
134
+ global.log.error(`[TenantManager] Failed to reset search_path: ${cleanupErr}`);
135
+ }
136
+ await qr.release();
137
+ }
138
+ }
139
+ else {
140
+ if (global.log?.i)
141
+ global.log.info(`[TenantManager] Created Tenant Record for ${driver}`);
142
+ }
143
+ return savedTenant;
144
+ }
145
+ async deleteTenant(id) {
146
+ const repo = this.dataSource.getRepository('Tenant');
147
+ await repo.softDelete(id);
148
+ }
149
+ async restoreTenant(id) {
150
+ const repo = this.dataSource.getRepository('Tenant');
151
+ await repo.restore(id);
152
+ return repo.findOneBy({ id });
153
+ }
154
+ async getTenant(id) {
155
+ const repo = this.dataSource.getRepository('Tenant');
156
+ return (await repo.findOneBy({ id }));
157
+ }
158
+ async updateTenant(id, data) {
159
+ const repo = this.dataSource.getRepository('Tenant');
160
+ const { dbSchema: _ignore, ...updateData } = data;
161
+ await repo.update(id, updateData);
162
+ return repo.findOneBy({ id });
163
+ }
164
+ async listTenants() {
165
+ const repo = this.dataSource.getRepository('Tenant');
166
+ return repo.find({ order: { createdAt: 'DESC' } });
167
+ }
168
+ async runInTenantContext(tenantId, callback) {
169
+ const tenant = await this.getTenant(tenantId);
170
+ if (!tenant)
171
+ throw new Error(`Tenant ${tenantId} not found`);
172
+ if (tenant.status !== 'active')
173
+ throw new Error(`Tenant ${tenantId} is not active`);
174
+ const qr = this.dataSource.createQueryRunner();
175
+ await qr.connect();
176
+ try {
177
+ await this.switchContext(tenant, qr.manager);
178
+ const result = await callback(qr.manager);
179
+ return result;
180
+ }
181
+ finally {
182
+ try {
183
+ await qr.query('SET search_path TO public');
184
+ }
185
+ catch (e) {
186
+ if (global.log?.w)
187
+ global.log.warn(`[TenantManager] Failed to reset search_path context: ${e}`);
188
+ }
189
+ await qr.release();
190
+ }
191
+ }
192
+ }
193
+ //# sourceMappingURL=tenantManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenantManager.js","sourceRoot":"","sources":["../../../../../lib/database/typeorm/loader/tenantManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { QueryRunner } from 'typeorm';
2
+ export declare function isImplemented(): boolean;
3
+ export declare function isValidToken(data: typeof global.entity.Token): Promise<boolean>;
4
+ export declare function createToken(data: typeof global.entity.Token, runner?: QueryRunner): Promise<any>;
5
+ export declare function resetExternalId(id: string, runner?: QueryRunner): Promise<any>;
6
+ export declare function updateTokenById(id: string, token: typeof global.entity.Token, runner?: QueryRunner): Promise<any>;
7
+ export declare function retrieveTokenById(id: string, runner?: QueryRunner): Promise<any>;
8
+ export declare function retrieveTokenByExternalId(externalId: string, runner?: QueryRunner): Promise<any>;
9
+ export declare function blockTokenById(id: string, reason: string, runner?: QueryRunner): Promise<any>;
10
+ export declare function unblockTokenById(id: string, runner?: QueryRunner): Promise<any>;
11
+ export declare function countQuery(data: any, runner?: QueryRunner): Promise<any>;
12
+ export declare function findQuery(data: any, runner?: QueryRunner): Promise<{
13
+ records: any;
14
+ headers: {
15
+ 'v-count': any;
16
+ 'v-total': any;
17
+ 'v-page': any;
18
+ 'v-pageSize': number | undefined;
19
+ 'v-pageCount': number;
20
+ };
21
+ }>;
22
+ export declare function removeTokenById(id: string, runner?: QueryRunner): Promise<any>;
23
+ //# sourceMappingURL=tokenManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenManager.d.ts","sourceRoot":"","sources":["../../../../../lib/database/typeorm/loader/tokenManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAA;AA6BpD,wBAAgB,aAAa,YAE5B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,oBAElE;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,gBA4BvF;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBAoBrE;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,gBAexG;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBASvE;AAED,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBASvF;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBAEpF;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBAEtE;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW,gBAE/D;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,WAAW;;;;;;;;;GAE9D;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,gBASrE"}
@@ -0,0 +1,131 @@
1
+ import * as Crypto from 'crypto';
2
+ import { ServiceError } from '../util/error.js';
3
+ import { executeCountQuery, executeFindQuery } from '../query.js';
4
+ function getTokenRepo(context) {
5
+ const { multi_tenant } = global.config?.options || {};
6
+ if (multi_tenant?.enabled && !context) {
7
+ throw new Error('[TokenManager] ⛔️ CRITICAL: Missing DB Context (Runner/Manager) in Multi-Tenant Environment!');
8
+ }
9
+ if (!context) {
10
+ return global.connection.getRepository(global.entity.Token);
11
+ }
12
+ if (context.manager) {
13
+ return context.manager.getRepository(global.entity.Token);
14
+ }
15
+ return context.getRepository(global.entity.Token);
16
+ }
17
+ export function isImplemented() {
18
+ return true;
19
+ }
20
+ export async function isValidToken(data) {
21
+ return !!data && (!!data._id || !!data.id) && !!data.externalId && !!data.name;
22
+ }
23
+ export async function createToken(data, runner) {
24
+ const { name, description } = data;
25
+ if (!name) {
26
+ throw new ServiceError('Invalid parameters', 400);
27
+ }
28
+ try {
29
+ const repo = getTokenRepo(runner);
30
+ let externalId, token;
31
+ do {
32
+ externalId = Crypto.randomUUID({ disableEntropyCache: true });
33
+ token = await repo.findOneBy({ externalId: externalId });
34
+ } while (token != null);
35
+ const newToken = repo.create({
36
+ ...data,
37
+ name: name,
38
+ description: description,
39
+ blocked: false,
40
+ blockedReason: null,
41
+ externalId: externalId
42
+ });
43
+ return repo.save(newToken);
44
+ }
45
+ catch (error) {
46
+ throw error;
47
+ }
48
+ }
49
+ export async function resetExternalId(id, runner) {
50
+ if (!id) {
51
+ throw new ServiceError('Invalid parameters', 400);
52
+ }
53
+ try {
54
+ const repo = getTokenRepo(runner);
55
+ let externalId, token;
56
+ do {
57
+ externalId = Crypto.randomUUID({ disableEntropyCache: true });
58
+ token = await repo.findOneBy({ externalId: externalId });
59
+ } while (token != null);
60
+ return await updateTokenById(id, { externalId: externalId }, runner);
61
+ }
62
+ catch (error) {
63
+ if (error?.code == 23505) {
64
+ throw new ServiceError('External ID not changed', 409);
65
+ }
66
+ throw error;
67
+ }
68
+ }
69
+ export async function updateTokenById(id, token, runner) {
70
+ if (!id || !token) {
71
+ throw new ServiceError('Invalid parameters', 400);
72
+ }
73
+ try {
74
+ const repo = getTokenRepo(runner);
75
+ const tokenEx = await repo.findOneBy({ id: id });
76
+ if (!tokenEx) {
77
+ throw new ServiceError('Token not found', 404);
78
+ }
79
+ const merged = repo.merge(tokenEx, token);
80
+ return repo.save(merged);
81
+ }
82
+ catch (error) {
83
+ throw error;
84
+ }
85
+ }
86
+ export async function retrieveTokenById(id, runner) {
87
+ if (!id) {
88
+ throw new ServiceError('Invalid parameters', 400);
89
+ }
90
+ try {
91
+ return await getTokenRepo(runner).findOneBy({ id: id });
92
+ }
93
+ catch (error) {
94
+ throw error;
95
+ }
96
+ }
97
+ export async function retrieveTokenByExternalId(externalId, runner) {
98
+ if (!externalId) {
99
+ throw new ServiceError('Invalid parameters', 400);
100
+ }
101
+ try {
102
+ return await getTokenRepo(runner).findOneBy({ externalId: externalId });
103
+ }
104
+ catch (error) {
105
+ throw error;
106
+ }
107
+ }
108
+ export async function blockTokenById(id, reason, runner) {
109
+ return updateTokenById(id, { blocked: true, blockedAt: new Date(), blockedReason: reason }, runner);
110
+ }
111
+ export async function unblockTokenById(id, runner) {
112
+ return updateTokenById(id, { blocked: false, blockedAt: new Date(), blockedReason: null }, runner);
113
+ }
114
+ export async function countQuery(data, runner) {
115
+ return await executeCountQuery(getTokenRepo(runner), data, {});
116
+ }
117
+ export async function findQuery(data, runner) {
118
+ return await executeFindQuery(getTokenRepo(runner), {}, data);
119
+ }
120
+ export async function removeTokenById(id, runner) {
121
+ if (!id) {
122
+ throw new ServiceError('Invalid parameters', 400);
123
+ }
124
+ try {
125
+ return await getTokenRepo(runner).delete(id);
126
+ }
127
+ catch (error) {
128
+ throw error;
129
+ }
130
+ }
131
+ //# sourceMappingURL=tokenManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenManager.js","sourceRoot":"","sources":["../../../../../lib/database/typeorm/loader/tokenManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAMjE,SAAS,YAAY,CAAC,OAAqC;IACzD,MAAM,EAAE,YAAY,EAAE,GAAI,MAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAA;IAE9D,IAAI,YAAY,EAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAA;IACjH,CAAC;IAGD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7D,CAAC;IAGD,IAAK,OAAuB,CAAC,OAAO,EAAE,CAAC;QACrC,OAAQ,OAAuB,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5E,CAAC;IAGD,OAAQ,OAAyB,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAgC;IACjE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgC,EAAE,MAAoB;IACtF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAElC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,UAAU,EAAE,KAAK,CAAA;QACrB,GAAG,CAAC;YACF,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7D,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QAC1D,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAC;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,GAAG,IAAI;YACP,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,WAAW;YACxB,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,UAAU;SACO,CAAC,CAAA;QAEhC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,MAAoB;IACpE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,UAAU,EAAE,KAAK,CAAA;QACrB,GAAG,CAAC;YACF,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7D,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;QAC1D,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAC;QAEvB,OAAO,MAAM,eAAe,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAA;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAA;QACxD,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,KAAiC,EAAE,MAAoB;IACvG,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAU,EAAE,MAAoB;IACtE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,UAAkB,EAAE,MAAoB;IACtF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAU,EAAE,MAAc,EAAE,MAAoB;IACnF,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAA;AACrG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAU,EAAE,MAAoB;IACrE,OAAO,eAAe,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAS,EAAE,MAAoB;IAC9D,OAAO,MAAM,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAS,EAAE,MAAoB;IAC7D,OAAO,MAAM,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,MAAoB;IACpE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { QueryRunner } from 'typeorm';
2
+ export declare function isImplemented(): boolean;
3
+ export declare function isValidUser(data: typeof global.entity.User): Promise<boolean>;
4
+ export declare function createUser(data: typeof global.entity.User, runner?: QueryRunner): Promise<any>;
5
+ export declare function deleteUser(id: string, runner?: QueryRunner): Promise<any>;
6
+ export declare function resetExternalId(id: string, runner?: QueryRunner): Promise<any>;
7
+ export declare function updateUserById(id: string, user: typeof global.entity.User, runner?: QueryRunner): Promise<any>;
8
+ export declare function retrieveUserById(id: string, runner?: QueryRunner): Promise<any>;
9
+ export declare function retrieveUserByEmail(email: string, runner?: QueryRunner): Promise<any>;
10
+ export declare function retrieveUserByUsername(username: string, runner?: QueryRunner): Promise<any>;
11
+ export declare function retrieveUserByConfirmationToken(code: string, runner?: QueryRunner): Promise<any>;
12
+ export declare function retrieveUserByResetPasswordToken(code: string, runner?: QueryRunner): Promise<any>;
13
+ export declare function retrieveUserByExternalId(externalId: string, runner?: QueryRunner): Promise<any>;
14
+ export declare function retrieveUserByPassword(email: string, password: string, runner?: QueryRunner): Promise<any>;
15
+ export declare function changePassword(email: string, password: string, oldPassword: string, runner?: QueryRunner): Promise<any>;
16
+ export declare function forgotPassword(email: string, runner?: QueryRunner): Promise<any>;
17
+ export declare function resetPassword(user: typeof global.entity.User, password: string, runner?: QueryRunner): Promise<any>;
18
+ export declare function userConfirmation(user: typeof global.entity.User, runner?: QueryRunner): Promise<any>;
19
+ export declare function blockUserById(id: string, reason: string, runner?: QueryRunner): Promise<any>;
20
+ export declare function unblockUserById(id: string, runner?: QueryRunner): Promise<any>;
21
+ export declare function isPasswordToBeChanged(user: typeof global.entity.User): boolean;
22
+ export declare function countQuery(data: any, runner?: QueryRunner): Promise<any>;
23
+ export declare function findQuery(data: any, runner?: QueryRunner): Promise<{
24
+ records: any;
25
+ headers: {
26
+ 'v-count': any;
27
+ 'v-total': any;
28
+ 'v-page': any;
29
+ 'v-pageSize': number | undefined;
30
+ 'v-pageCount': number;
31
+ };
32
+ }>;
33
+ export declare function disableUserById(id: string, runner?: QueryRunner): Promise<any>;
34
+ export declare function saveMfaSecret(userId: string, secret: string, runner?: QueryRunner): Promise<boolean>;
35
+ export declare function retrieveMfaSecret(userId: string, runner?: QueryRunner): Promise<string | null>;
36
+ export declare function enableMfa(userId: string, runner?: QueryRunner): Promise<any>;
37
+ export declare function disableMfa(userId: string, runner?: QueryRunner): Promise<any>;
38
+ export declare function forceDisableMfaForAdmin(email: string, runner?: QueryRunner): Promise<boolean>;
39
+ //# sourceMappingURL=userManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userManager.d.ts","sourceRoot":"","sources":["../../../../../lib/database/typeorm/loader/userManager.ts"],"names":[],"mappings":"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"}