@volcanicminds/backend 2.2.21 → 2.3.2

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 (56) hide show
  1. package/README.md +19 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -169
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/api/auth/controller/auth.d.ts +0 -9
  6. package/dist/lib/api/auth/controller/auth.d.ts.map +1 -1
  7. package/dist/lib/api/auth/controller/auth.js +32 -75
  8. package/dist/lib/api/auth/controller/auth.js.map +1 -1
  9. package/dist/lib/api/auth/routes.d.ts +0 -45
  10. package/dist/lib/api/auth/routes.d.ts.map +1 -1
  11. package/dist/lib/api/auth/routes.js +1 -32
  12. package/dist/lib/api/auth/routes.js.map +1 -1
  13. package/dist/lib/api/tool/controller/tool.d.ts.map +1 -1
  14. package/dist/lib/api/tool/controller/tool.js +4 -0
  15. package/dist/lib/api/tool/controller/tool.js.map +1 -1
  16. package/dist/lib/api/users/controller/user.d.ts +10 -1
  17. package/dist/lib/api/users/controller/user.d.ts.map +1 -1
  18. package/dist/lib/api/users/controller/user.js +56 -2
  19. package/dist/lib/api/users/controller/user.js.map +1 -1
  20. package/dist/lib/api/users/routes.d.ts +67 -0
  21. package/dist/lib/api/users/routes.d.ts.map +1 -1
  22. package/dist/lib/api/users/routes.js +55 -2
  23. package/dist/lib/api/users/routes.js.map +1 -1
  24. package/dist/lib/config/general.d.ts +7 -0
  25. package/dist/lib/config/general.d.ts.map +1 -1
  26. package/dist/lib/config/general.js +8 -1
  27. package/dist/lib/config/general.js.map +1 -1
  28. package/dist/lib/defaults/managers.d.ts +8 -0
  29. package/dist/lib/defaults/managers.d.ts.map +1 -0
  30. package/dist/lib/defaults/managers.js +71 -0
  31. package/dist/lib/defaults/managers.js.map +1 -0
  32. package/dist/lib/hooks/onRequest.d.ts.map +1 -1
  33. package/dist/lib/hooks/onRequest.js +54 -2
  34. package/dist/lib/hooks/onRequest.js.map +1 -1
  35. package/dist/lib/hooks/onResponse.d.ts.map +1 -1
  36. package/dist/lib/hooks/onResponse.js +5 -0
  37. package/dist/lib/hooks/onResponse.js.map +1 -1
  38. package/dist/lib/loader/general.d.ts.map +1 -1
  39. package/dist/lib/loader/general.js +6 -1
  40. package/dist/lib/loader/general.js.map +1 -1
  41. package/dist/lib/loader/tenant.d.ts +3 -0
  42. package/dist/lib/loader/tenant.d.ts.map +1 -0
  43. package/dist/lib/loader/tenant.js +67 -0
  44. package/dist/lib/loader/tenant.js.map +1 -0
  45. package/lib/api/auth/controller/auth.ts +35 -81
  46. package/lib/api/auth/routes.ts +4 -33
  47. package/lib/api/tool/controller/tool.ts +5 -0
  48. package/lib/api/users/controller/user.ts +69 -2
  49. package/lib/api/users/routes.ts +58 -2
  50. package/lib/config/general.ts +8 -1
  51. package/lib/defaults/managers.ts +88 -0
  52. package/lib/hooks/onRequest.ts +72 -7
  53. package/lib/hooks/onResponse.ts +6 -0
  54. package/lib/loader/general.ts +6 -1
  55. package/lib/loader/tenant.ts +86 -0
  56. package/package.json +1 -1
@@ -3,12 +3,19 @@ export default {
3
3
  options: {
4
4
  allow_multiple_admin: false,
5
5
  admin_can_change_passwords: false,
6
+ allow_admin_change_password_users: false,
6
7
  reset_external_id_on_login: false,
7
8
  scheduler: false,
8
9
  embedded_auth: true,
9
10
  mfa_policy: process.env.MFA_POLICY || 'OPTIONAL',
10
11
  mfa_admin_forced_reset_email: null,
11
- mfa_admin_forced_reset_until: null
12
+ mfa_admin_forced_reset_until: null,
13
+ multi_tenant: {
14
+ enabled: false,
15
+ resolver: 'subdomain',
16
+ header_key: 'x-tenant-id',
17
+ query_key: 'tid'
18
+ }
12
19
  }
13
20
  };
14
21
  //# sourceMappingURL=general.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/config/general.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE;QACP,oBAAoB,EAAE,KAAK;QAC3B,0BAA0B,EAAE,KAAK;QACjC,0BAA0B,EAAE,KAAK;QACjC,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU;QAChD,4BAA4B,EAAE,IAAI;QAClC,4BAA4B,EAAE,IAAI;KACnC;CACF,CAAA"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/config/general.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE;QACP,oBAAoB,EAAE,KAAK;QAC3B,0BAA0B,EAAE,KAAK;QACjC,iCAAiC,EAAE,KAAK;QACxC,0BAA0B,EAAE,KAAK;QACjC,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU;QAChD,4BAA4B,EAAE,IAAI;QAClC,4BAA4B,EAAE,IAAI;QAClC,YAAY,EAAE;YACZ,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,aAAa;YACzB,SAAS,EAAE,KAAK;SACjB;KACF;CACF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { UserManagement, TokenManagement, DataBaseManagement, MfaManagement, TransferManagement, TenantManagement } from '../../types/global.js';
2
+ export declare const defaultTenantManager: TenantManagement;
3
+ export declare const defaultUserManager: UserManagement;
4
+ export declare const defaultTokenManager: TokenManagement;
5
+ export declare const defaultDataBaseManager: DataBaseManagement;
6
+ export declare const defaultMfaManager: MfaManagement;
7
+ export declare const defaultTransferManager: TransferManagement;
8
+ //# sourceMappingURL=managers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managers.d.ts","sourceRoot":"","sources":["../../../lib/defaults/managers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,uBAAuB,CAAA;AAI9B,eAAO,MAAM,oBAAoB,EAAE,gBAMlC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,cA4BhC,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,eAajC,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,kBAKpC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,kBASpC,CAAA"}
@@ -0,0 +1,71 @@
1
+ export const defaultTenantManager = {
2
+ isImplemented() { return false; },
3
+ resolveTenant(_req) { throw new Error('Not implemented'); },
4
+ switchContext(_tenant, _db) { throw new Error('Not implemented'); },
5
+ createTenant(_data) { throw new Error('Not implemented'); },
6
+ deleteTenant(_id) { throw new Error('Not implemented'); }
7
+ };
8
+ export const defaultUserManager = {
9
+ isImplemented() { return false; },
10
+ isValidUser(_data) { throw new Error('Not implemented.'); },
11
+ createUser(_data) { throw new Error('Not implemented.'); },
12
+ deleteUser(_data) { throw new Error('Not implemented.'); },
13
+ resetExternalId(_data) { throw new Error('Not implemented.'); },
14
+ updateUserById(_id, _user) { throw new Error('Not implemented.'); },
15
+ retrieveUserById(_id) { throw new Error('Not implemented.'); },
16
+ retrieveUserByEmail(_email) { throw new Error('Not implemented.'); },
17
+ retrieveUserByConfirmationToken(_code) { throw new Error('Not implemented.'); },
18
+ retrieveUserByResetPasswordToken(_code) { throw new Error('Not implemented.'); },
19
+ retrieveUserByUsername(_username) { throw new Error('Not implemented.'); },
20
+ retrieveUserByExternalId(_externalId) { throw new Error('Not implemented.'); },
21
+ retrieveUserByPassword(_email, _password) { throw new Error('Not implemented.'); },
22
+ changePassword(_email, _password, _oldPassword) { throw new Error('Not implemented.'); },
23
+ forgotPassword(_email) { throw new Error('Not implemented.'); },
24
+ userConfirmation(_user) { throw new Error('Not implemented.'); },
25
+ resetPassword(_user, _password) { throw new Error('Not implemented.'); },
26
+ blockUserById(_id, _reason) { throw new Error('Not implemented.'); },
27
+ unblockUserById(_data) { throw new Error('Not implemented.'); },
28
+ countQuery(_data) { throw new Error('Not implemented.'); },
29
+ findQuery(_data) { throw new Error('Not implemented.'); },
30
+ disableUserById(_id) { throw new Error('Not implemented.'); },
31
+ saveMfaSecret(_userId, _secret) { throw new Error('Not implemented.'); },
32
+ retrieveMfaSecret(_userId) { throw new Error('Not implemented.'); },
33
+ enableMfa(_userId) { throw new Error('Not implemented.'); },
34
+ disableMfa(_userId) { throw new Error('Not implemented.'); },
35
+ forceDisableMfaForAdmin(_email) { throw new Error('Not implemented.'); }
36
+ };
37
+ export const defaultTokenManager = {
38
+ isImplemented() { return false; },
39
+ isValidToken(_data) { throw new Error('Not implemented.'); },
40
+ createToken(_data) { throw new Error('Not implemented.'); },
41
+ resetExternalId(_id) { throw new Error('Not implemented.'); },
42
+ updateTokenById(_id, _token) { throw new Error('Not implemented.'); },
43
+ retrieveTokenById(_id) { throw new Error('Not implemented.'); },
44
+ retrieveTokenByExternalId(_id) { throw new Error('Not implemented.'); },
45
+ blockTokenById(_id, _reason) { throw new Error('Not implemented.'); },
46
+ unblockTokenById(_id) { throw new Error('Not implemented.'); },
47
+ countQuery(_data) { throw new Error('Not implemented.'); },
48
+ findQuery(_data) { throw new Error('Not implemented.'); },
49
+ removeTokenById(_id) { throw new Error('Not implemented.'); }
50
+ };
51
+ export const defaultDataBaseManager = {
52
+ isImplemented() { return false; },
53
+ synchronizeSchemas() { throw new Error('Not implemented.'); },
54
+ retrieveBy(_entityName, _entityId) { throw new Error('Not implemented.'); },
55
+ addChange(_entityName, _entityId, _status, _userId, _contents, _changeEntity) { throw new Error('Not implemented.'); }
56
+ };
57
+ export const defaultMfaManager = {
58
+ generateSetup(_appName, _email) { throw new Error('Not implemented.'); },
59
+ verify(_token, _secret) { throw new Error('Not implemented.'); }
60
+ };
61
+ export const defaultTransferManager = {
62
+ isImplemented() { return false; },
63
+ getPath() { throw new Error('Not implemented.'); },
64
+ getServer() { throw new Error('Not implemented.'); },
65
+ onUploadCreate(_callback) { throw new Error('Not implemented.'); },
66
+ onUploadFinish(_callback) { throw new Error('Not implemented.'); },
67
+ onUploadTerminate(_callback) { throw new Error('Not implemented.'); },
68
+ handle(_req, _res) { throw new Error('Not implemented.'); },
69
+ isValid(_req) { throw new Error('Not implemented.'); }
70
+ };
71
+ //# sourceMappingURL=managers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../lib/defaults/managers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"onRequest.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"yBAsBsB,QAAG,EAAE,UAAK;AAAhC,wBA2IC"}
1
+ {"version":3,"file":"onRequest.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"yBAsBsB,QAAG,EAAE,UAAK;AAAhC,wBA0MC"}
@@ -17,6 +17,50 @@ const normalizeRoles = (rolesArray) => {
17
17
  export default async (req, reply) => {
18
18
  if (log.i)
19
19
  req.startedAt = new Date();
20
+ const { multi_tenant } = global.config?.options || {};
21
+ if (multi_tenant?.enabled) {
22
+ let tenantSlug;
23
+ if (multi_tenant.resolver === 'subdomain') {
24
+ const host = req.headers.host || '';
25
+ const parts = host.split('.');
26
+ if (parts.length >= 2) {
27
+ if (parts[0] !== 'www') {
28
+ tenantSlug = parts[0];
29
+ }
30
+ }
31
+ }
32
+ else if (multi_tenant.resolver === 'header') {
33
+ tenantSlug = req.headers[multi_tenant?.header_key || 'x-tenant-id'];
34
+ }
35
+ else if (multi_tenant.resolver === 'query') {
36
+ tenantSlug = req.query[multi_tenant?.query_key || 'tid'];
37
+ }
38
+ if (!tenantSlug) {
39
+ return reply.code(400).send({ statusCode: 400, error: 'Tenant ID missing', message: 'Tenant ID is required' });
40
+ }
41
+ if (!global.connection) {
42
+ log.error('Multi-tenant enabled but global.connection not found');
43
+ return reply.code(500).send({ statusCode: 500, error: 'Internal Server Error' });
44
+ }
45
+ const tenant = await global.connection.getRepository(global.entity.Tenant).findOneBy({ slug: tenantSlug });
46
+ if (!tenant) {
47
+ return reply
48
+ .code(404)
49
+ .send({ statusCode: 404, error: 'Tenant Not Found', message: `Tenant '${tenantSlug}' not found` });
50
+ }
51
+ if (tenant.status !== 'active') {
52
+ return reply.code(403).send({ statusCode: 403, error: 'Tenant Inactive', message: 'Tenant is not active' });
53
+ }
54
+ const runner = global.connection.createQueryRunner();
55
+ await runner.connect();
56
+ if (!/^[a-z0-9_]+$/i.test(tenant.schema)) {
57
+ await runner.release();
58
+ return reply.code(400).send({ statusCode: 400, error: 'Invalid Schema Name' });
59
+ }
60
+ await runner.query(`SET search_path TO "${tenant.schema}", "public"`);
61
+ req.runner = runner;
62
+ req.tenant = tenant;
63
+ }
20
64
  req.data = () => getData(req);
21
65
  req.parameters = () => getParams(req);
22
66
  if (global.transferPath) {
@@ -60,6 +104,16 @@ export default async (req, reply) => {
60
104
  if (bearerToken) {
61
105
  try {
62
106
  const tokenData = reply.server.jwt.verify(bearerToken);
107
+ const { multi_tenant } = global.config?.options || {};
108
+ if (multi_tenant?.enabled && req.tenant && tokenData.tid) {
109
+ if (tokenData.tid !== req.tenant.id) {
110
+ return reply.status(403).send({
111
+ statusCode: 403,
112
+ code: 'TENANT_MISMATCH',
113
+ message: 'Token does not belong to this tenant'
114
+ });
115
+ }
116
+ }
63
117
  if (tokenData.role === 'pre-auth-mfa') {
64
118
  const currentUrl = req.routeOptions.url || req.raw.url;
65
119
  const isAllowed = MFA_SETUP_WHITELIST.some((url) => currentUrl.endsWith(url));
@@ -120,8 +174,6 @@ export default async (req, reply) => {
120
174
  }
121
175
  }
122
176
  }
123
- else {
124
- }
125
177
  if (cfg.requiredRoles?.length > 0) {
126
178
  const { method = '', url = '', requiredRoles } = cfg;
127
179
  const authorizedRoles = req.roles();
@@ -1 +1 @@
1
- {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"onResponse.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":"yBAAsB,QAAG,EAAE,UAAK;AAAhC,wBAoBC"}
1
+ {"version":3,"file":"onResponse.d.ts","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":"yBAAsB,QAAG,EAAE,UAAK;AAAhC,wBA0BC"}
@@ -1,4 +1,9 @@
1
1
  export default async (req, reply) => {
2
+ if (req.runner) {
3
+ if (!req.runner.isReleased) {
4
+ await req.runner.release();
5
+ }
6
+ }
2
7
  let extraMessage = '';
3
8
  if (log.i && req.startedAt) {
4
9
  const elapsed = new Date().getTime() - req.startedAt.getTime();
@@ -1 +1 @@
1
- {"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":"AAAA,eAAe,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IAClC,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;QACtE,YAAY,GAAG,IAAI,OAAO,KAAK,CAAA;IACjC,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,CAAA;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1E,YAAY,IAAI,IAAI,OAAO,GAAG,SAAS,SAAS,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,CAAA;IAC3F,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACrB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":"AAAA,eAAe,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IAClC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,EAAE,CAAA;IACrB,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;QACtE,YAAY,GAAG,IAAI,OAAO,KAAK,CAAA;IACjC,CAAC;IACD,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,CAAA;QAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1E,YAAY,IAAI,IAAI,OAAO,GAAG,SAAS,SAAS,CAAA;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC,IAAI,EAAE,CAAA;IAC3F,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACrB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAI1D,wBAAsB,IAAI,2BAmCzB"}
1
+ {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAI1D,wBAAsB,IAAI,2BAwCzB"}
@@ -6,11 +6,16 @@ export async function load() {
6
6
  options: {
7
7
  allow_multiple_admin: false,
8
8
  admin_can_change_passwords: false,
9
+ allow_admin_change_password_users: false,
9
10
  reset_external_id_on_login: false,
10
11
  scheduler: false,
11
12
  embedded_auth: true,
12
13
  mfa_admin_forced_reset_email: undefined,
13
- mfa_admin_forced_reset_until: undefined
14
+ mfa_admin_forced_reset_until: undefined,
15
+ multi_tenant: {
16
+ enabled: false,
17
+ query_key: 'tid'
18
+ }
14
19
  }
15
20
  };
16
21
  const patterns = normalizePatterns(['..', 'config', 'general.{ts,js}'], ['src', 'config', 'general.{ts,js}']);
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP,oBAAoB,EAAE,KAAK;YAC3B,0BAA0B,EAAE,KAAK;YACjC,0BAA0B,EAAE,KAAK;YACjC,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,IAAI;YACnB,4BAA4B,EAAE,SAAS;YACvC,4BAA4B,EAAE,SAAS;SACxC;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAE7G,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,MAAM,GAAkB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;YAEtD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvC,aAAa,CAAC,OAAO,GAAG;oBACtB,GAAG,aAAa,CAAC,OAAO;oBACxB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC1B,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACpD,OAAO,aAAa,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../lib/loader/general.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP,oBAAoB,EAAE,KAAK;YAC3B,0BAA0B,EAAE,KAAK;YACjC,iCAAiC,EAAE,KAAK;YACxC,0BAA0B,EAAE,KAAK;YACjC,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,IAAI;YACnB,4BAA4B,EAAE,SAAS;YACvC,4BAA4B,EAAE,SAAS;YACvC,YAAY,EAAE;gBACZ,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK;aACjB;SACF;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAE7G,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,MAAM,GAAkB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAA;YAEtD,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,EAAE,CAAC;gBACvC,aAAa,CAAC,OAAO,GAAG;oBACtB,GAAG,aAAa,CAAC,OAAO;oBACxB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC1B,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACpD,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { FastifyInstance } from 'fastify';
2
+ export declare function apply(server: FastifyInstance): Promise<void>;
3
+ //# sourceMappingURL=tenant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../../lib/loader/tenant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGzC,wBAAsB,KAAK,CAAC,MAAM,EAAE,eAAe,iBAkFlD"}
@@ -0,0 +1,67 @@
1
+ export async function apply(server) {
2
+ const { multi_tenant } = global.config.options || {};
3
+ if (!multi_tenant?.enabled) {
4
+ if (log.i)
5
+ log.info('Multi-Tenant: Disabled — using single-tenant DB context');
6
+ server.addHook('onRequest', async (req) => {
7
+ const dataSource = global.connection;
8
+ if (dataSource) {
9
+ req.db = dataSource.manager;
10
+ }
11
+ });
12
+ return;
13
+ }
14
+ if (log.i)
15
+ log.info('Multi-Tenant: 🟢 Enabled');
16
+ server.addHook('onRequest', async (req, reply) => {
17
+ const tm = server['tenantManager'];
18
+ if (!tm || !tm.isImplemented()) {
19
+ const errorMsg = 'Multi-Tenant enabled but no TenantManager provided/implemented!';
20
+ if (log.f)
21
+ log.fatal(errorMsg);
22
+ throw new Error(errorMsg);
23
+ }
24
+ try {
25
+ const tenant = await tm.resolveTenant(req);
26
+ if (!tenant) {
27
+ if (log.w)
28
+ log.warn(`Multi-Tenant: Tenant resolution failed for request ${req.id}`);
29
+ return reply.code(404).send({
30
+ statusCode: 404,
31
+ error: 'Not Found',
32
+ message: 'Tenant not found or resolution failed'
33
+ });
34
+ }
35
+ req.tenant = tenant;
36
+ if (log.t)
37
+ log.trace(`Multi-Tenant: Context switched to ${tenant.slug || tenant.id}`);
38
+ const dataSource = global.connection;
39
+ if (dataSource) {
40
+ const qr = dataSource.createQueryRunner();
41
+ await qr.connect();
42
+ req.db = qr.manager;
43
+ await tm.switchContext(tenant, qr.manager);
44
+ reply.raw.on('finish', async () => {
45
+ if (!qr.isReleased) {
46
+ await qr.release();
47
+ }
48
+ });
49
+ }
50
+ else {
51
+ if (log.w)
52
+ log.warn('Multi-Tenant: Global connection not found! Skipping DB context creation.');
53
+ }
54
+ }
55
+ catch (err) {
56
+ const message = err instanceof Error ? err.message : String(err);
57
+ if (log.e)
58
+ log.error(`Multi-Tenant Error: ${message}`);
59
+ return reply.code(500).send({
60
+ statusCode: 500,
61
+ error: 'Internal Server Error',
62
+ message: 'Tenant Context Switch Failed'
63
+ });
64
+ }
65
+ });
66
+ }
67
+ //# sourceMappingURL=tenant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../../lib/loader/tenant.ts"],"names":[],"mappings":"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"}