@3sixty/engine-server-types 0.20.0-next.4 → 0.20.0-next.5

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 (116) hide show
  1. package/dist/es/components/authentication.js +41 -7
  2. package/dist/es/components/authentication.js.map +1 -1
  3. package/dist/es/components/authenticationAccount.js +85 -0
  4. package/dist/es/components/authenticationAccount.js.map +1 -0
  5. package/dist/es/components/authenticationAccountAdmin.js +46 -0
  6. package/dist/es/components/authenticationAccountAdmin.js.map +1 -0
  7. package/dist/es/components/authenticationAdmin.js +11 -9
  8. package/dist/es/components/authenticationAdmin.js.map +1 -1
  9. package/dist/es/components/authenticationProvider.js +41 -0
  10. package/dist/es/components/authenticationProvider.js.map +1 -0
  11. package/dist/es/components/oauth.js +32 -0
  12. package/dist/es/components/oauth.js.map +1 -0
  13. package/dist/es/components/organization.js +43 -0
  14. package/dist/es/components/organization.js.map +1 -0
  15. package/dist/es/components/organizationRequestAdmin.js +41 -0
  16. package/dist/es/components/organizationRequestAdmin.js.map +1 -0
  17. package/dist/es/components/restRouteProcessor.js +19 -9
  18. package/dist/es/components/restRouteProcessor.js.map +1 -1
  19. package/dist/es/components/socketRouteProcessor.js +19 -9
  20. package/dist/es/components/socketRouteProcessor.js.map +1 -1
  21. package/dist/es/index.js +18 -0
  22. package/dist/es/index.js.map +1 -1
  23. package/dist/es/models/IEngineServerConfig.js.map +1 -1
  24. package/dist/es/models/config/authenticationAccountAdminComponentConfig.js +2 -0
  25. package/dist/es/models/config/authenticationAccountAdminComponentConfig.js.map +1 -0
  26. package/dist/es/models/config/authenticationAccountComponentConfig.js +2 -0
  27. package/dist/es/models/config/authenticationAccountComponentConfig.js.map +1 -0
  28. package/dist/es/models/config/authenticationProviderConfig.js +2 -0
  29. package/dist/es/models/config/authenticationProviderConfig.js.map +1 -0
  30. package/dist/es/models/config/oauthComponentConfig.js +2 -0
  31. package/dist/es/models/config/oauthComponentConfig.js.map +1 -0
  32. package/dist/es/models/config/organizationComponentConfig.js +2 -0
  33. package/dist/es/models/config/organizationComponentConfig.js.map +1 -0
  34. package/dist/es/models/config/organizationRequestAdminComponentConfig.js +2 -0
  35. package/dist/es/models/config/organizationRequestAdminComponentConfig.js.map +1 -0
  36. package/dist/es/models/config/restRouteProcessorConfig.js.map +1 -1
  37. package/dist/es/models/config/socketRouteProcessorConfig.js.map +1 -1
  38. package/dist/es/models/types/authenticationAccountAdminComponentType.js +17 -0
  39. package/dist/es/models/types/authenticationAccountAdminComponentType.js.map +1 -0
  40. package/dist/es/models/types/authenticationAccountComponentType.js +17 -0
  41. package/dist/es/models/types/authenticationAccountComponentType.js.map +1 -0
  42. package/dist/es/models/types/authenticationProviderType.js +21 -0
  43. package/dist/es/models/types/authenticationProviderType.js.map +1 -0
  44. package/dist/es/models/types/oauthComponentType.js +13 -0
  45. package/dist/es/models/types/oauthComponentType.js.map +1 -0
  46. package/dist/es/models/types/organizationComponentType.js +17 -0
  47. package/dist/es/models/types/organizationComponentType.js.map +1 -0
  48. package/dist/es/models/types/organizationRequestAdminComponentType.js +17 -0
  49. package/dist/es/models/types/organizationRequestAdminComponentType.js.map +1 -0
  50. package/dist/es/models/types/restRouteProcessorType.js +10 -1
  51. package/dist/es/models/types/restRouteProcessorType.js.map +1 -1
  52. package/dist/es/models/types/socketRouteProcessorType.js +10 -1
  53. package/dist/es/models/types/socketRouteProcessorType.js.map +1 -1
  54. package/dist/types/components/authentication.d.ts +16 -0
  55. package/dist/types/components/authenticationAccount.d.ts +37 -0
  56. package/dist/types/components/authenticationAccountAdmin.d.ts +12 -0
  57. package/dist/types/components/authenticationProvider.d.ts +12 -0
  58. package/dist/types/components/oauth.d.ts +12 -0
  59. package/dist/types/components/organization.d.ts +12 -0
  60. package/dist/types/components/organizationRequestAdmin.d.ts +12 -0
  61. package/dist/types/index.d.ts +18 -0
  62. package/dist/types/models/IEngineServerConfig.d.ts +30 -0
  63. package/dist/types/models/config/authenticationAccountAdminComponentConfig.d.ts +13 -0
  64. package/dist/types/models/config/authenticationAccountComponentConfig.d.ts +13 -0
  65. package/dist/types/models/config/authenticationProviderConfig.d.ts +17 -0
  66. package/dist/types/models/config/oauthComponentConfig.d.ts +9 -0
  67. package/dist/types/models/config/organizationComponentConfig.d.ts +13 -0
  68. package/dist/types/models/config/organizationRequestAdminComponentConfig.d.ts +13 -0
  69. package/dist/types/models/config/restRouteProcessorConfig.d.ts +8 -1
  70. package/dist/types/models/config/socketRouteProcessorConfig.d.ts +8 -1
  71. package/dist/types/models/types/authenticationAccountAdminComponentType.d.ts +17 -0
  72. package/dist/types/models/types/authenticationAccountComponentType.d.ts +17 -0
  73. package/dist/types/models/types/authenticationProviderType.d.ts +21 -0
  74. package/dist/types/models/types/oauthComponentType.d.ts +13 -0
  75. package/dist/types/models/types/organizationComponentType.d.ts +17 -0
  76. package/dist/types/models/types/organizationRequestAdminComponentType.d.ts +17 -0
  77. package/dist/types/models/types/restRouteProcessorType.d.ts +8 -0
  78. package/dist/types/models/types/socketRouteProcessorType.d.ts +8 -0
  79. package/docs/changelog.md +15 -0
  80. package/docs/examples.md +91 -0
  81. package/docs/reference/functions/initialiseAccountDataEntityStorage.md +30 -0
  82. package/docs/reference/functions/initialiseAuthenticationAccountAdminComponent.md +31 -0
  83. package/docs/reference/functions/initialiseAuthenticationAccountComponent.md +31 -0
  84. package/docs/reference/functions/initialiseAuthenticationPasswordResetEntityStorage.md +30 -0
  85. package/docs/reference/functions/initialiseAuthenticationProvider.md +31 -0
  86. package/docs/reference/functions/initialiseAuthenticationUserEntityStorage.md +30 -0
  87. package/docs/reference/functions/initialiseOAuthComponent.md +31 -0
  88. package/docs/reference/functions/initialiseOrganizationComponent.md +31 -0
  89. package/docs/reference/functions/initialiseOrganizationEntityStorage.md +31 -0
  90. package/docs/reference/functions/initialiseOrganizationRequestAdminComponent.md +31 -0
  91. package/docs/reference/functions/initialiseOrganizationRequestEntityStorage.md +30 -0
  92. package/docs/reference/index.md +29 -0
  93. package/docs/reference/interfaces/IEngineServerConfig.md +36 -0
  94. package/docs/reference/type-aliases/AuthenticationAccountAdminComponentConfig.md +5 -0
  95. package/docs/reference/type-aliases/AuthenticationAccountAdminComponentType.md +5 -0
  96. package/docs/reference/type-aliases/AuthenticationAccountComponentConfig.md +5 -0
  97. package/docs/reference/type-aliases/AuthenticationAccountComponentType.md +5 -0
  98. package/docs/reference/type-aliases/AuthenticationProviderConfig.md +5 -0
  99. package/docs/reference/type-aliases/AuthenticationProviderType.md +5 -0
  100. package/docs/reference/type-aliases/OAuthComponentConfig.md +17 -0
  101. package/docs/reference/type-aliases/OAuthComponentType.md +5 -0
  102. package/docs/reference/type-aliases/OrganizationComponentConfig.md +5 -0
  103. package/docs/reference/type-aliases/OrganizationComponentType.md +5 -0
  104. package/docs/reference/type-aliases/OrganizationRequestAdminComponentConfig.md +5 -0
  105. package/docs/reference/type-aliases/OrganizationRequestAdminComponentType.md +5 -0
  106. package/docs/reference/type-aliases/RestRouteProcessorConfig.md +1 -1
  107. package/docs/reference/type-aliases/SocketRouteProcessorConfig.md +1 -1
  108. package/docs/reference/variables/AuthenticationAccountAdminComponentType.md +19 -0
  109. package/docs/reference/variables/AuthenticationAccountComponentType.md +19 -0
  110. package/docs/reference/variables/AuthenticationProviderType.md +25 -0
  111. package/docs/reference/variables/OAuthComponentType.md +13 -0
  112. package/docs/reference/variables/OrganizationComponentType.md +19 -0
  113. package/docs/reference/variables/OrganizationRequestAdminComponentType.md +19 -0
  114. package/docs/reference/variables/RestRouteProcessorType.md +12 -0
  115. package/docs/reference/variables/SocketRouteProcessorType.md +12 -0
  116. package/package.json +10 -3
@@ -1,4 +1,5 @@
1
1
  // Copyright 2024 IOTA Stiftung.
2
+ // Copyright 2026 3Sixty Trade Ltd.
2
3
  // SPDX-License-Identifier: Apache-2.0.
3
4
  import { EntityStorageAuthenticationRestClient } from "@3sixty/api-auth-entity-storage-rest-client";
4
5
  import { EntityStorageAuthenticationService, initSchema as initSchemaAuthEntityStorage } from "@3sixty/api-auth-entity-storage-service";
@@ -6,6 +7,34 @@ import { ContextIdHelper, ContextIdKeys } from "@3sixty/context";
6
7
  import { ComponentFactory } from "@3sixty/core";
7
8
  import { EngineTypeHelper, initialiseEntityStorageConnector } from "@3sixty/engine-types";
8
9
  import { AuthenticationComponentType } from "../models/types/authenticationComponentType.js";
10
+ /**
11
+ * Initialise the entity storage of the authentication users, shared by every component that uses
12
+ * it so the schema and partitions match.
13
+ * @param engineCore The engine core.
14
+ * @param context The context for the engine.
15
+ * @param storageType The configured storage type.
16
+ */
17
+ export function initialiseAuthenticationUserEntityStorage(engineCore, context, storageType) {
18
+ initSchemaAuthEntityStorage();
19
+ initialiseEntityStorageConnector(engineCore, context, storageType, "AuthenticationUser", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
20
+ ContextIdKeys.Node,
21
+ ContextIdKeys.Tenant
22
+ ]));
23
+ }
24
+ /**
25
+ * Initialise the entity storage of the password reset and sign up verification tokens, partitioned
26
+ * like the accounts they belong to.
27
+ * @param engineCore The engine core.
28
+ * @param context The context for the engine.
29
+ * @param storageType The configured storage type.
30
+ */
31
+ export function initialiseAuthenticationPasswordResetEntityStorage(engineCore, context, storageType) {
32
+ initSchemaAuthEntityStorage();
33
+ initialiseEntityStorageConnector(engineCore, context, storageType, "AuthenticationPasswordReset", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
34
+ ContextIdKeys.Node,
35
+ ContextIdKeys.Tenant
36
+ ]));
37
+ }
9
38
  /**
10
39
  * Initialise the authentication component.
11
40
  * @param engineCore The engine core.
@@ -18,16 +47,21 @@ export function initialiseAuthenticationComponent(engineCore, context, instanceC
18
47
  let instanceTypeName;
19
48
  if (instanceConfig.type === AuthenticationComponentType.EntityStorage) {
20
49
  createComponent = (createConfig) => {
21
- initSchemaAuthEntityStorage();
22
- initialiseEntityStorageConnector(engineCore, context, createConfig.options?.userEntityStorageType, "AuthenticationUser", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
23
- ContextIdKeys.Node,
24
- ContextIdKeys.Tenant
25
- ]));
50
+ initialiseAuthenticationUserEntityStorage(engineCore, context, createConfig.options?.userEntityStorageType);
51
+ initialiseAuthenticationPasswordResetEntityStorage(engineCore, context, createConfig.options?.passwordResetEntityStorageType);
26
52
  return new EntityStorageAuthenticationService(EngineTypeHelper.mergeConfig({
27
53
  vaultConnectorType: engineCore.getRegisteredInstanceType("vaultConnector"),
28
54
  tenantAdminComponentType: engineCore.getRegisteredInstanceTypeOptional("tenantAdminComponent"),
29
- authenticationAuditServiceType: engineCore.getRegisteredInstanceTypeOptional("authenticationAuditComponent"),
30
- authenticationRateServiceType: engineCore.getRegisteredInstanceType("authenticationRateComponent")
55
+ authenticationAuditServiceType: engineCore.getRegisteredInstanceType("authenticationAuditComponent"),
56
+ authenticationRateServiceType: engineCore.getRegisteredInstanceType("authenticationRateComponent"),
57
+ authenticationAccountAdminComponentType: engineCore.getRegisteredInstanceType("authenticationAccountAdminComponent"),
58
+ authenticationAccountComponentType: engineCore.getRegisteredInstanceType("authenticationAccountComponent"),
59
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent"),
60
+ organizationRequestAdminComponentType: engineCore.getRegisteredInstanceType("organizationRequestAdminComponent"),
61
+ messagingComponentType: engineCore.getRegisteredInstanceType("messagingComponent"),
62
+ loggingComponentType: engineCore.getRegisteredSilencedType("logging", "EntityStorageAuthenticationService"),
63
+ taskSchedulerComponentType: engineCore.getRegisteredInstanceType("taskSchedulerComponent"),
64
+ platformComponentType: engineCore.getRegisteredInstanceType("platformComponent")
31
65
  }, createConfig.options));
32
66
  };
33
67
  instanceTypeName = "entity-storage-authentication-service";
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.js","sources":["../../../src/components/authentication.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,EACN,kCAAkC,EAClC,UAAU,IAAI,2BAA2B,EAEzC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAMjE,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAI1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAChD,UAA4C,EAC5C,OAAgD,EAChD,cAA6C;IAE7C,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,2BAA2B,CAAC,aAAa,EAAE,CAAC;QACvE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,2BAA2B,EAAE,CAAC;YAC9B,gCAAgC,CAC/B,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,EAC3C,oBAAoB,EACpB,eAAe,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE;gBACpE,aAAa,CAAC,IAAI;gBAClB,aAAa,CAAC,MAAM;aACpB,CAAC,CACF,CAAC;YACF,OAAO,IAAI,kCAAkC,CAC5C,gBAAgB,CAAC,WAAW,CAC3B;gBACC,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;gBAC1E,wBAAwB,EACvB,UAAU,CAAC,iCAAiC,CAAC,sBAAsB,CAAC;gBACrE,8BAA8B,EAAE,UAAU,CAAC,iCAAiC,CAC3E,8BAA8B,CAC9B;gBACD,6BAA6B,EAAE,UAAU,CAAC,yBAAyB,CAClE,6BAA6B,CAC7B;aACD,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,uCAAuC,CAAC;IAC5D,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,2BAA2B,CAAC,UAAU,EAAE,CAAC;QAC3E,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,qCAAqC,CACxC,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,gBAAgB,GAAG,2CAA2C,CAAC;IAChE,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationRestClient } from \"@3sixty/api-auth-entity-storage-rest-client\";\nimport {\n\tEntityStorageAuthenticationService,\n\tinitSchema as initSchemaAuthEntityStorage,\n\ttype AuthenticationUser\n} from \"@3sixty/api-auth-entity-storage-service\";\nimport { ContextIdHelper, ContextIdKeys } from \"@3sixty/context\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper, initialiseEntityStorageConnector } from \"@3sixty/engine-types\";\n\nimport type { AuthenticationComponentConfig } from \"../models/config/authenticationComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationComponentType } from \"../models/types/authenticationComponentType.js\";\n\n/**\n * Initialise the authentication component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitSchemaAuthEntityStorage();\n\t\t\tinitialiseEntityStorageConnector(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType,\n\t\t\t\t\"AuthenticationUser\",\n\t\t\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\t\t\tContextIdKeys.Node,\n\t\t\t\t\tContextIdKeys.Tenant\n\t\t\t\t])\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tvaultConnectorType: engineCore.getRegisteredInstanceType(\"vaultConnector\"),\n\t\t\t\t\t\ttenantAdminComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceTypeOptional(\"tenantAdminComponent\"),\n\t\t\t\t\t\tauthenticationAuditServiceType: engineCore.getRegisteredInstanceTypeOptional(\n\t\t\t\t\t\t\t\"authenticationAuditComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthenticationRateServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationRateComponent\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-service\";\n\t} else if (instanceConfig.type === AuthenticationComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew EntityStorageAuthenticationRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"entity-storage-authentication-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
1
+ {"version":3,"file":"authentication.js","sources":["../../../src/components/authentication.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAC;AACpG,OAAO,EACN,kCAAkC,EAClC,UAAU,IAAI,2BAA2B,EAGzC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAMjE,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAI1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,UAAU,yCAAyC,CACxD,UAA4C,EAC5C,OAAgD,EAChD,WAA+B;IAE/B,2BAA2B,EAAE,CAAC;IAC9B,gCAAgC,CAC/B,UAAU,EACV,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,eAAe,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE;QACpE,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;KACpB,CAAC,CACF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kDAAkD,CACjE,UAA4C,EAC5C,OAAgD,EAChD,WAA+B;IAE/B,2BAA2B,EAAE,CAAC;IAC9B,gCAAgC,CAC/B,UAAU,EACV,OAAO,EACP,WAAW,EACX,6BAA6B,EAC7B,eAAe,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE;QACpE,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;KACpB,CAAC,CACF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iCAAiC,CAChD,UAA4C,EAC5C,OAAgD,EAChD,cAA6C;IAE7C,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,2BAA2B,CAAC,aAAa,EAAE,CAAC;QACvE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,yCAAyC,CACxC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAC3C,CAAC;YACF,kDAAkD,CACjD,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,8BAA8B,CACpD,CAAC;YACF,OAAO,IAAI,kCAAkC,CAC5C,gBAAgB,CAAC,WAAW,CAC3B;gBACC,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;gBAC1E,wBAAwB,EACvB,UAAU,CAAC,iCAAiC,CAAC,sBAAsB,CAAC;gBACrE,8BAA8B,EAAE,UAAU,CAAC,yBAAyB,CACnE,8BAA8B,CAC9B;gBACD,6BAA6B,EAAE,UAAU,CAAC,yBAAyB,CAClE,6BAA6B,CAC7B;gBACD,uCAAuC,EAAE,UAAU,CAAC,yBAAyB,CAC5E,qCAAqC,CACrC;gBACD,kCAAkC,EAAE,UAAU,CAAC,yBAAyB,CACvE,gCAAgC,CAChC;gBACD,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;gBAC/D,qCAAqC,EAAE,UAAU,CAAC,yBAAyB,CAC1E,mCAAmC,CACnC;gBACD,sBAAsB,EAAE,UAAU,CAAC,yBAAyB,CAAC,oBAAoB,CAAC;gBAClF,oBAAoB,EAAE,UAAU,CAAC,yBAAyB,CACzD,SAAS,EACT,oCAAoC,CACpC;gBACD,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;gBAC/D,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;aAChF,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,uCAAuC,CAAC;IAC5D,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,2BAA2B,CAAC,UAAU,EAAE,CAAC;QAC3E,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,qCAAqC,CACxC,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,gBAAgB,GAAG,2CAA2C,CAAC;IAChE,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationRestClient } from \"@3sixty/api-auth-entity-storage-rest-client\";\nimport {\n\tEntityStorageAuthenticationService,\n\tinitSchema as initSchemaAuthEntityStorage,\n\ttype AuthenticationPasswordReset,\n\ttype AuthenticationUser\n} from \"@3sixty/api-auth-entity-storage-service\";\nimport { ContextIdHelper, ContextIdKeys } from \"@3sixty/context\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper, initialiseEntityStorageConnector } from \"@3sixty/engine-types\";\n\nimport type { AuthenticationComponentConfig } from \"../models/config/authenticationComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationComponentType } from \"../models/types/authenticationComponentType.js\";\n\n/**\n * Initialise the entity storage of the authentication users, shared by every component that uses\n * it so the schema and partitions match.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param storageType The configured storage type.\n */\nexport function initialiseAuthenticationUserEntityStorage(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tstorageType: string | undefined\n): void {\n\tinitSchemaAuthEntityStorage();\n\tinitialiseEntityStorageConnector(\n\t\tengineCore,\n\t\tcontext,\n\t\tstorageType,\n\t\t\"AuthenticationUser\",\n\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\tContextIdKeys.Node,\n\t\t\tContextIdKeys.Tenant\n\t\t])\n\t);\n}\n\n/**\n * Initialise the entity storage of the password reset and sign up verification tokens, partitioned\n * like the accounts they belong to.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param storageType The configured storage type.\n */\nexport function initialiseAuthenticationPasswordResetEntityStorage(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tstorageType: string | undefined\n): void {\n\tinitSchemaAuthEntityStorage();\n\tinitialiseEntityStorageConnector(\n\t\tengineCore,\n\t\tcontext,\n\t\tstorageType,\n\t\t\"AuthenticationPasswordReset\",\n\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\tContextIdKeys.Node,\n\t\t\tContextIdKeys.Tenant\n\t\t])\n\t);\n}\n\n/**\n * Initialise the authentication component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAuthenticationUserEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType\n\t\t\t);\n\t\t\tinitialiseAuthenticationPasswordResetEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.passwordResetEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tvaultConnectorType: engineCore.getRegisteredInstanceType(\"vaultConnector\"),\n\t\t\t\t\t\ttenantAdminComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceTypeOptional(\"tenantAdminComponent\"),\n\t\t\t\t\t\tauthenticationAuditServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationAuditComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthenticationRateServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationRateComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthenticationAccountAdminComponentType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationAccountAdminComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthenticationAccountComponentType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationAccountComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\"),\n\t\t\t\t\t\torganizationRequestAdminComponentType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"organizationRequestAdminComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmessagingComponentType: engineCore.getRegisteredInstanceType(\"messagingComponent\"),\n\t\t\t\t\t\tloggingComponentType: engineCore.getRegisteredSilencedType(\n\t\t\t\t\t\t\t\"logging\",\n\t\t\t\t\t\t\t\"EntityStorageAuthenticationService\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\ttaskSchedulerComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"taskSchedulerComponent\"),\n\t\t\t\t\t\tplatformComponentType: engineCore.getRegisteredInstanceType(\"platformComponent\")\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-service\";\n\t} else if (instanceConfig.type === AuthenticationComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew EntityStorageAuthenticationRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"entity-storage-authentication-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -0,0 +1,85 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { EntityStorageAuthenticationAccountRestClient } from "@3sixty/api-auth-account-rest-client";
4
+ import { EntityStorageAuthenticationAccountService, initSchema as initSchemaAuthAccount } from "@3sixty/api-auth-account-service";
5
+ import { ContextIdHelper, ContextIdKeys } from "@3sixty/context";
6
+ import { ComponentFactory } from "@3sixty/core";
7
+ import { EngineTypeHelper, initialiseEntityStorageConnector } from "@3sixty/engine-types";
8
+ import { AuthenticationAccountComponentType } from "../models/types/authenticationAccountComponentType.js";
9
+ /**
10
+ * Initialise the entity storage of the account data, shared by every component that uses it so the
11
+ * schema and partitions match.
12
+ * @param engineCore The engine core.
13
+ * @param context The context for the engine.
14
+ * @param storageType The configured storage type.
15
+ */
16
+ export function initialiseAccountDataEntityStorage(engineCore, context, storageType) {
17
+ initSchemaAuthAccount();
18
+ initialiseEntityStorageConnector(engineCore, context, storageType, "AccountData", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
19
+ ContextIdKeys.Node,
20
+ ContextIdKeys.Tenant
21
+ ]));
22
+ }
23
+ /**
24
+ * Initialise the entity storage of the requests to join an organization, shared by every component
25
+ * that uses it so the schema and partitions match.
26
+ * @param engineCore The engine core.
27
+ * @param context The context for the engine.
28
+ * @param storageType The configured storage type.
29
+ */
30
+ export function initialiseOrganizationRequestEntityStorage(engineCore, context, storageType) {
31
+ initSchemaAuthAccount();
32
+ initialiseEntityStorageConnector(engineCore, context, storageType, "OrganizationRequest", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
33
+ ContextIdKeys.Node,
34
+ ContextIdKeys.Tenant
35
+ ]));
36
+ }
37
+ /**
38
+ * Initialise the entity storage of the registered organizations, inside the tenant partition like
39
+ * the accounts that join them. Every component that checks an organization is registered
40
+ * initialises it, so the check never runs against missing storage.
41
+ * @param engineCore The engine core.
42
+ * @param context The context for the engine.
43
+ * @param storageType The configured storage type.
44
+ */
45
+ export function initialiseOrganizationEntityStorage(engineCore, context, storageType) {
46
+ initSchemaAuthAccount();
47
+ initialiseEntityStorageConnector(engineCore, context, storageType, "Organization", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
48
+ ContextIdKeys.Node,
49
+ ContextIdKeys.Tenant
50
+ ]));
51
+ }
52
+ /**
53
+ * Initialise the authentication account component.
54
+ * @param engineCore The engine core.
55
+ * @param context The context for the engine.
56
+ * @param instanceConfig The instance config.
57
+ * @returns The instance created and the factory for it.
58
+ */
59
+ export function initialiseAuthenticationAccountComponent(engineCore, context, instanceConfig) {
60
+ let createComponent;
61
+ let instanceTypeName;
62
+ if (instanceConfig.type === AuthenticationAccountComponentType.EntityStorage) {
63
+ createComponent = (createConfig) => {
64
+ initialiseAccountDataEntityStorage(engineCore, context, createConfig.options?.accountDataEntityStorageType);
65
+ initialiseOrganizationRequestEntityStorage(engineCore, context, createConfig.options?.organizationRequestEntityStorageType);
66
+ initialiseOrganizationEntityStorage(engineCore, context, createConfig.options?.organizationEntityStorageType);
67
+ return new EntityStorageAuthenticationAccountService(EngineTypeHelper.mergeConfig({
68
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent"),
69
+ identityComponentType: engineCore.getRegisteredInstanceType("identityComponent"),
70
+ authenticationRateServiceType: engineCore.getRegisteredInstanceType("authenticationRateComponent")
71
+ }, createConfig.options));
72
+ };
73
+ instanceTypeName = "entity-storage-authentication-account-service";
74
+ }
75
+ else if (instanceConfig.type === AuthenticationAccountComponentType.RestClient) {
76
+ createComponent = (createConfig) => new EntityStorageAuthenticationAccountRestClient(EngineTypeHelper.mergeConfig(createConfig.options));
77
+ instanceTypeName = "entity-storage-authentication-account-rest-client";
78
+ }
79
+ return {
80
+ createComponent: createComponent,
81
+ instanceTypeName,
82
+ factory: ComponentFactory
83
+ };
84
+ }
85
+ //# sourceMappingURL=authenticationAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticationAccount.js","sources":["../../../src/components/authenticationAccount.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationAccountRestClient } from \"@3sixty/api-auth-account-rest-client\";\nimport {\n\ttype AccountData,\n\tEntityStorageAuthenticationAccountService,\n\tinitSchema as initSchemaAuthAccount,\n\ttype Organization,\n\ttype OrganizationRequest\n} from \"@3sixty/api-auth-account-service\";\nimport { ContextIdHelper, ContextIdKeys } from \"@3sixty/context\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper, initialiseEntityStorageConnector } from \"@3sixty/engine-types\";\n\nimport type { AuthenticationAccountComponentConfig } from \"../models/config/authenticationAccountComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationAccountComponentType } from \"../models/types/authenticationAccountComponentType.js\";\n\n/**\n * Initialise the entity storage of the account data, shared by every component that uses it so the\n * schema and partitions match.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param storageType The configured storage type.\n */\nexport function initialiseAccountDataEntityStorage(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tstorageType: string | undefined\n): void {\n\tinitSchemaAuthAccount();\n\tinitialiseEntityStorageConnector(\n\t\tengineCore,\n\t\tcontext,\n\t\tstorageType,\n\t\t\"AccountData\",\n\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\tContextIdKeys.Node,\n\t\t\tContextIdKeys.Tenant\n\t\t])\n\t);\n}\n\n/**\n * Initialise the entity storage of the requests to join an organization, shared by every component\n * that uses it so the schema and partitions match.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param storageType The configured storage type.\n */\nexport function initialiseOrganizationRequestEntityStorage(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tstorageType: string | undefined\n): void {\n\tinitSchemaAuthAccount();\n\tinitialiseEntityStorageConnector(\n\t\tengineCore,\n\t\tcontext,\n\t\tstorageType,\n\t\t\"OrganizationRequest\",\n\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\tContextIdKeys.Node,\n\t\t\tContextIdKeys.Tenant\n\t\t])\n\t);\n}\n\n/**\n * Initialise the entity storage of the registered organizations, inside the tenant partition like\n * the accounts that join them. Every component that checks an organization is registered\n * initialises it, so the check never runs against missing storage.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param storageType The configured storage type.\n */\nexport function initialiseOrganizationEntityStorage(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tstorageType: string | undefined\n): void {\n\tinitSchemaAuthAccount();\n\tinitialiseEntityStorageConnector(\n\t\tengineCore,\n\t\tcontext,\n\t\tstorageType,\n\t\t\"Organization\",\n\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\tContextIdKeys.Node,\n\t\t\tContextIdKeys.Tenant\n\t\t])\n\t);\n}\n\n/**\n * Initialise the authentication account component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationAccountComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationAccountComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationAccountComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationAccountComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAccountDataEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.accountDataEntityStorageType\n\t\t\t);\n\t\t\tinitialiseOrganizationRequestEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationRequestEntityStorageType\n\t\t\t);\n\t\t\tinitialiseOrganizationEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationAccountService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\"),\n\t\t\t\t\t\tidentityComponentType: engineCore.getRegisteredInstanceType(\"identityComponent\"),\n\t\t\t\t\t\tauthenticationRateServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationRateComponent\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-account-service\";\n\t} else if (instanceConfig.type === AuthenticationAccountComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew EntityStorageAuthenticationAccountRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"entity-storage-authentication-account-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -0,0 +1,46 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { EntityStorageAuthenticationAccountAdminRestClient } from "@3sixty/api-auth-account-rest-client";
4
+ import { EntityStorageAuthenticationAccountAdminService } from "@3sixty/api-auth-account-service";
5
+ import { ComponentFactory } from "@3sixty/core";
6
+ import { EngineTypeHelper } from "@3sixty/engine-types";
7
+ import { initialiseAuthenticationUserEntityStorage } from "./authentication.js";
8
+ import { initialiseAccountDataEntityStorage, initialiseOrganizationEntityStorage, initialiseOrganizationRequestEntityStorage } from "./authenticationAccount.js";
9
+ import { AuthenticationAccountAdminComponentType } from "../models/types/authenticationAccountAdminComponentType.js";
10
+ /**
11
+ * Initialise the authentication account admin component.
12
+ * @param engineCore The engine core.
13
+ * @param context The context for the engine.
14
+ * @param instanceConfig The instance config.
15
+ * @returns The instance created and the factory for it.
16
+ */
17
+ export function initialiseAuthenticationAccountAdminComponent(engineCore, context, instanceConfig) {
18
+ let createComponent;
19
+ let instanceTypeName;
20
+ if (instanceConfig.type === AuthenticationAccountAdminComponentType.EntityStorage) {
21
+ createComponent = (createConfig) => {
22
+ initialiseAccountDataEntityStorage(engineCore, context, createConfig.options?.accountDataEntityStorageType);
23
+ initialiseOrganizationEntityStorage(engineCore, context, createConfig.options?.organizationEntityStorageType);
24
+ // Removing an identity removes its pending requests, and an identity import completes them.
25
+ initialiseOrganizationRequestEntityStorage(engineCore, context, createConfig.options?.organizationRequestEntityStorageType);
26
+ // The accounts are looked up to check one exists before its data is changed.
27
+ initialiseAuthenticationUserEntityStorage(engineCore, context, createConfig.options?.userEntityStorageType);
28
+ return new EntityStorageAuthenticationAccountAdminService(EngineTypeHelper.mergeConfig({
29
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent"),
30
+ identityComponentType: engineCore.getRegisteredInstanceType("identityComponent"),
31
+ authenticationRateServiceType: engineCore.getRegisteredInstanceType("authenticationRateComponent")
32
+ }, createConfig.options));
33
+ };
34
+ instanceTypeName = "entity-storage-authentication-account-admin-service";
35
+ }
36
+ else if (instanceConfig.type === AuthenticationAccountAdminComponentType.RestClient) {
37
+ createComponent = (createConfig) => new EntityStorageAuthenticationAccountAdminRestClient(EngineTypeHelper.mergeConfig(createConfig.options));
38
+ instanceTypeName = "entity-storage-authentication-account-admin-rest-client";
39
+ }
40
+ return {
41
+ createComponent: createComponent,
42
+ instanceTypeName,
43
+ factory: ComponentFactory
44
+ };
45
+ }
46
+ //# sourceMappingURL=authenticationAccountAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticationAccountAdmin.js","sources":["../../../src/components/authenticationAccountAdmin.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,iDAAiD,EAAE,MAAM,sCAAsC,CAAC;AACzG,OAAO,EAAE,8CAA8C,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAMjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,yCAAyC,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EACN,kCAAkC,EAClC,mCAAmC,EACnC,0CAA0C,EAC1C,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,uCAAuC,EAAE,MAAM,4DAA4D,CAAC;AAErH;;;;;;GAMG;AACH,MAAM,UAAU,6CAA6C,CAC5D,UAA4C,EAC5C,OAAgD,EAChD,cAAyD;IAEzD,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,uCAAuC,CAAC,aAAa,EAAE,CAAC;QACnF,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,kCAAkC,CACjC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAClD,CAAC;YACF,mCAAmC,CAClC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,6BAA6B,CACnD,CAAC;YACF,4FAA4F;YAC5F,0CAA0C,CACzC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAC1D,CAAC;YACF,6EAA6E;YAC7E,yCAAyC,CACxC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAC3C,CAAC;YACF,OAAO,IAAI,8CAA8C,CACxD,gBAAgB,CAAC,WAAW,CAC3B;gBACC,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;gBAC/D,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;gBAChF,6BAA6B,EAAE,UAAU,CAAC,yBAAyB,CAClE,6BAA6B,CAC7B;aACD,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,qDAAqD,CAAC;IAC1E,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,uCAAuC,CAAC,UAAU,EAAE,CAAC;QACvF,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,iDAAiD,CACpD,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,gBAAgB,GAAG,yDAAyD,CAAC;IAC9E,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationAccountAdminRestClient } from \"@3sixty/api-auth-account-rest-client\";\nimport { EntityStorageAuthenticationAccountAdminService } from \"@3sixty/api-auth-account-service\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\n\nimport { initialiseAuthenticationUserEntityStorage } from \"./authentication.js\";\nimport {\n\tinitialiseAccountDataEntityStorage,\n\tinitialiseOrganizationEntityStorage,\n\tinitialiseOrganizationRequestEntityStorage\n} from \"./authenticationAccount.js\";\nimport type { AuthenticationAccountAdminComponentConfig } from \"../models/config/authenticationAccountAdminComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationAccountAdminComponentType } from \"../models/types/authenticationAccountAdminComponentType.js\";\n\n/**\n * Initialise the authentication account admin component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationAccountAdminComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationAccountAdminComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationAccountAdminComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationAccountAdminComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAccountDataEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.accountDataEntityStorageType\n\t\t\t);\n\t\t\tinitialiseOrganizationEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationEntityStorageType\n\t\t\t);\n\t\t\t// Removing an identity removes its pending requests, and an identity import completes them.\n\t\t\tinitialiseOrganizationRequestEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationRequestEntityStorageType\n\t\t\t);\n\t\t\t// The accounts are looked up to check one exists before its data is changed.\n\t\t\tinitialiseAuthenticationUserEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationAccountAdminService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\"),\n\t\t\t\t\t\tidentityComponentType: engineCore.getRegisteredInstanceType(\"identityComponent\"),\n\t\t\t\t\t\tauthenticationRateServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationRateComponent\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-account-admin-service\";\n\t} else if (instanceConfig.type === AuthenticationAccountAdminComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew EntityStorageAuthenticationAccountAdminRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"entity-storage-authentication-account-admin-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  // Copyright 2024 IOTA Stiftung.
2
+ // Copyright 2026 3Sixty Trade Ltd.
2
3
  // SPDX-License-Identifier: Apache-2.0.
3
- import { EntityStorageAuthenticationAdminService, initSchema as initSchemaAuthEntityStorage } from "@3sixty/api-auth-entity-storage-service";
4
- import { ContextIdHelper, ContextIdKeys } from "@3sixty/context";
4
+ import { EntityStorageAuthenticationAdminService } from "@3sixty/api-auth-entity-storage-service";
5
5
  import { ComponentFactory } from "@3sixty/core";
6
- import { EngineTypeHelper, initialiseEntityStorageConnector } from "@3sixty/engine-types";
6
+ import { EngineTypeHelper } from "@3sixty/engine-types";
7
+ import { initialiseAuthenticationPasswordResetEntityStorage, initialiseAuthenticationUserEntityStorage } from "./authentication.js";
7
8
  import { AuthenticationAdminComponentType } from "../models/types/authenticationAdminComponentType.js";
8
9
  /**
9
10
  * Initialise the authentication admin.
@@ -17,13 +18,14 @@ export function initialiseAuthenticationAdminComponent(engineCore, context, inst
17
18
  let instanceTypeName;
18
19
  if (instanceConfig.type === AuthenticationAdminComponentType.EntityStorage) {
19
20
  createComponent = (createConfig) => {
20
- initSchemaAuthEntityStorage();
21
- initialiseEntityStorageConnector(engineCore, context, createConfig.options?.userEntityStorageType, "AuthenticationUser", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
22
- ContextIdKeys.Node,
23
- ContextIdKeys.Tenant
24
- ]));
21
+ initialiseAuthenticationUserEntityStorage(engineCore, context, createConfig.options?.userEntityStorageType);
22
+ // The password reset tokens of a removed account are removed with it.
23
+ initialiseAuthenticationPasswordResetEntityStorage(engineCore, context, createConfig.options?.passwordResetEntityStorageType);
25
24
  return new EntityStorageAuthenticationAdminService(EngineTypeHelper.mergeConfig({
26
- authenticationAuditServiceType: engineCore.getRegisteredInstanceTypeOptional("authenticationAuditComponent")
25
+ authenticationAuditServiceType: engineCore.getRegisteredInstanceType("authenticationAuditComponent"),
26
+ authenticationAccountAdminComponentType: engineCore.getRegisteredInstanceType("authenticationAccountAdminComponent"),
27
+ organizationRequestAdminComponentType: engineCore.getRegisteredInstanceType("organizationRequestAdminComponent"),
28
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent")
27
29
  }, createConfig.options));
28
30
  };
29
31
  instanceTypeName = "entity-storage-authentication-admin-service";
@@ -1 +1 @@
1
- {"version":3,"file":"authenticationAdmin.js","sources":["../../../src/components/authenticationAdmin.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,uCAAuC;AACvC,OAAO,EACN,uCAAuC,EACvC,UAAU,IAAI,2BAA2B,EAEzC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMhD,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAI1F,OAAO,EAAE,gCAAgC,EAAE,MAAM,qDAAqD,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CACrD,UAA4C,EAC5C,OAAgD,EAChD,cAAkD;IAElD,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,gCAAgC,CAAC,aAAa,EAAE,CAAC;QAC5E,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,2BAA2B,EAAE,CAAC;YAC9B,gCAAgC,CAC/B,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,EAC3C,oBAAoB,EACpB,eAAe,CAAC,qBAAqB,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE;gBACpE,aAAa,CAAC,IAAI;gBAClB,aAAa,CAAC,MAAM;aACpB,CAAC,CACF,CAAC;YACF,OAAO,IAAI,uCAAuC,CACjD,gBAAgB,CAAC,WAAW,CAC3B;gBACC,8BAA8B,EAAE,UAAU,CAAC,iCAAiC,CAC3E,8BAA8B,CAC9B;aACD,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,6CAA6C,CAAC;IAClE,CAAC;IAED,OAAO;QACN,eAAe;QACf,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport {\n\tEntityStorageAuthenticationAdminService,\n\tinitSchema as initSchemaAuthEntityStorage,\n\ttype AuthenticationUser\n} from \"@3sixty/api-auth-entity-storage-service\";\nimport { ContextIdHelper, ContextIdKeys } from \"@3sixty/context\";\nimport { ComponentFactory } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper, initialiseEntityStorageConnector } from \"@3sixty/engine-types\";\n\nimport type { AuthenticationAdminComponentConfig } from \"../models/config/authenticationAdminComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationAdminComponentType } from \"../models/types/authenticationAdminComponentType.js\";\n\n/**\n * Initialise the authentication admin.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationAdminComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationAdminComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationAdminComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationAdminComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitSchemaAuthEntityStorage();\n\t\t\tinitialiseEntityStorageConnector(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType,\n\t\t\t\t\"AuthenticationUser\",\n\t\t\t\tContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [\n\t\t\t\t\tContextIdKeys.Node,\n\t\t\t\t\tContextIdKeys.Tenant\n\t\t\t\t])\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationAdminService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tauthenticationAuditServiceType: engineCore.getRegisteredInstanceTypeOptional(\n\t\t\t\t\t\t\t\"authenticationAuditComponent\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-admin-service\";\n\t}\n\n\treturn {\n\t\tcreateComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
1
+ {"version":3,"file":"authenticationAdmin.js","sources":["../../../src/components/authenticationAdmin.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,uCAAuC,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACN,kDAAkD,EAClD,yCAAyC,EACzC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,gCAAgC,EAAE,MAAM,qDAAqD,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,UAAU,sCAAsC,CACrD,UAA4C,EAC5C,OAAgD,EAChD,cAAkD;IAElD,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,gCAAgC,CAAC,aAAa,EAAE,CAAC;QAC5E,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,yCAAyC,CACxC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAC3C,CAAC;YACF,sEAAsE;YACtE,kDAAkD,CACjD,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,8BAA8B,CACpD,CAAC;YACF,OAAO,IAAI,uCAAuC,CACjD,gBAAgB,CAAC,WAAW,CAC3B;gBACC,8BAA8B,EAAE,UAAU,CAAC,yBAAyB,CACnE,8BAA8B,CAC9B;gBACD,uCAAuC,EAAE,UAAU,CAAC,yBAAyB,CAC5E,qCAAqC,CACrC;gBACD,qCAAqC,EAAE,UAAU,CAAC,yBAAyB,CAC1E,mCAAmC,CACnC;gBACD,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;aAC/D,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,6CAA6C,CAAC;IAClE,CAAC;IAED,OAAO;QACN,eAAe;QACf,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationAdminService } from \"@3sixty/api-auth-entity-storage-service\";\nimport { ComponentFactory } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\n\nimport {\n\tinitialiseAuthenticationPasswordResetEntityStorage,\n\tinitialiseAuthenticationUserEntityStorage\n} from \"./authentication.js\";\nimport type { AuthenticationAdminComponentConfig } from \"../models/config/authenticationAdminComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationAdminComponentType } from \"../models/types/authenticationAdminComponentType.js\";\n\n/**\n * Initialise the authentication admin.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationAdminComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationAdminComponentConfig\n): EngineTypeInitialiserReturn<AuthenticationAdminComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationAdminComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAuthenticationUserEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType\n\t\t\t);\n\t\t\t// The password reset tokens of a removed account are removed with it.\n\t\t\tinitialiseAuthenticationPasswordResetEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.passwordResetEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationAdminService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tauthenticationAuditServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationAuditComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthenticationAccountAdminComponentType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationAccountAdminComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\torganizationRequestAdminComponentType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"organizationRequestAdminComponent\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\")\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-authentication-admin-service\";\n\t}\n\n\treturn {\n\t\tcreateComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -0,0 +1,41 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { EntityStorageAuthenticationProviderConnector } from "@3sixty/api-auth-connector-entity-storage";
4
+ import { AuthenticationProviderFactory } from "@3sixty/api-auth-models";
5
+ import { GoogleOAuthProviderConnector } from "@3sixty/api-auth-oauth-connector-google";
6
+ import { MicrosoftOAuthProviderConnector } from "@3sixty/api-auth-oauth-connector-microsoft";
7
+ import { EngineTypeHelper } from "@3sixty/engine-types";
8
+ import { initialiseAuthenticationUserEntityStorage } from "./authentication.js";
9
+ import { AuthenticationProviderType } from "../models/types/authenticationProviderType.js";
10
+ /**
11
+ * Initialise an authentication provider, registered under its authentication provider id.
12
+ * @param engineCore The engine core.
13
+ * @param context The context for the engine.
14
+ * @param instanceConfig The instance config.
15
+ * @returns The instance created and the factory for it.
16
+ */
17
+ export function initialiseAuthenticationProvider(engineCore, context, instanceConfig) {
18
+ let createComponent;
19
+ let instanceTypeName;
20
+ if (instanceConfig.type === AuthenticationProviderType.EntityStorage) {
21
+ createComponent = (createConfig) => {
22
+ initialiseAuthenticationUserEntityStorage(engineCore, context, createConfig.options?.userEntityStorageType);
23
+ return new EntityStorageAuthenticationProviderConnector(EngineTypeHelper.mergeConfig(createConfig.options));
24
+ };
25
+ instanceTypeName = EntityStorageAuthenticationProviderConnector.NAMESPACE;
26
+ }
27
+ else if (instanceConfig.type === AuthenticationProviderType.Google) {
28
+ createComponent = (createConfig) => new GoogleOAuthProviderConnector(createConfig.options);
29
+ instanceTypeName = GoogleOAuthProviderConnector.NAMESPACE;
30
+ }
31
+ else if (instanceConfig.type === AuthenticationProviderType.Microsoft) {
32
+ createComponent = (createConfig) => new MicrosoftOAuthProviderConnector(createConfig.options);
33
+ instanceTypeName = MicrosoftOAuthProviderConnector.NAMESPACE;
34
+ }
35
+ return {
36
+ createComponent: createComponent,
37
+ instanceTypeName,
38
+ factory: AuthenticationProviderFactory
39
+ };
40
+ }
41
+ //# sourceMappingURL=authenticationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticationProvider.js","sources":["../../../src/components/authenticationProvider.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,4CAA4C,EAAE,MAAM,2CAA2C,CAAC;AACzG,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAO7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,yCAAyC,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAE3F;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAC/C,UAA4C,EAC5C,OAAgD,EAChD,cAA4C;IAE5C,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,0BAA0B,CAAC,aAAa,EAAE,CAAC;QACtE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,yCAAyC,CACxC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,qBAAqB,CAC3C,CAAC;YACF,OAAO,IAAI,4CAA4C,CACtD,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,4CAA4C,CAAC,SAAS,CAAC;IAC3E,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACtE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,4BAA4B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACxD,gBAAgB,GAAG,4BAA4B,CAAC,SAAS,CAAC;IAC3D,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,0BAA0B,CAAC,SAAS,EAAE,CAAC;QACzE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,+BAA+B,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3D,gBAAgB,GAAG,+BAA+B,CAAC,SAAS,CAAC;IAC9D,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,6BAA6B;KACtC,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { EntityStorageAuthenticationProviderConnector } from \"@3sixty/api-auth-connector-entity-storage\";\nimport { AuthenticationProviderFactory } from \"@3sixty/api-auth-models\";\nimport { GoogleOAuthProviderConnector } from \"@3sixty/api-auth-oauth-connector-google\";\nimport { MicrosoftOAuthProviderConnector } from \"@3sixty/api-auth-oauth-connector-microsoft\";\nimport type { IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\nimport { initialiseAuthenticationUserEntityStorage } from \"./authentication.js\";\nimport type { AuthenticationProviderConfig } from \"../models/config/authenticationProviderConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { AuthenticationProviderType } from \"../models/types/authenticationProviderType.js\";\n\n/**\n * Initialise an authentication provider, registered under its authentication provider id.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseAuthenticationProvider(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: AuthenticationProviderConfig\n): EngineTypeInitialiserReturn<AuthenticationProviderConfig, typeof AuthenticationProviderFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === AuthenticationProviderType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAuthenticationUserEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.userEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageAuthenticationProviderConnector(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = EntityStorageAuthenticationProviderConnector.NAMESPACE;\n\t} else if (instanceConfig.type === AuthenticationProviderType.Google) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew GoogleOAuthProviderConnector(createConfig.options);\n\t\tinstanceTypeName = GoogleOAuthProviderConnector.NAMESPACE;\n\t} else if (instanceConfig.type === AuthenticationProviderType.Microsoft) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew MicrosoftOAuthProviderConnector(createConfig.options);\n\t\tinstanceTypeName = MicrosoftOAuthProviderConnector.NAMESPACE;\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: AuthenticationProviderFactory\n\t};\n}\n"]}
@@ -0,0 +1,32 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { OAuthService } from "@3sixty/api-auth-oauth-service";
4
+ import { ComponentFactory } from "@3sixty/core";
5
+ import { EngineTypeHelper } from "@3sixty/engine-types";
6
+ import { OAuthComponentType } from "../models/types/oauthComponentType.js";
7
+ /**
8
+ * Initialise the OAuth sign in component.
9
+ * @param engineCore The engine core.
10
+ * @param context The context for the engine.
11
+ * @param instanceConfig The instance config.
12
+ * @returns The instance created and the factory for it.
13
+ */
14
+ export function initialiseOAuthComponent(engineCore, context, instanceConfig) {
15
+ let createComponent;
16
+ let instanceTypeName;
17
+ if (instanceConfig.type === OAuthComponentType.Service) {
18
+ createComponent = (createConfig) => new OAuthService(EngineTypeHelper.mergeConfig({
19
+ authenticationComponentType: engineCore.getRegisteredInstanceType("authenticationComponent"),
20
+ loggingComponentType: engineCore.getRegisteredSilencedType("logging", "OAuthService"),
21
+ vaultConnectorType: engineCore.getRegisteredInstanceType("vaultConnector"),
22
+ config: createConfig.options.config
23
+ }, createConfig.options));
24
+ instanceTypeName = "o-auth-service";
25
+ }
26
+ return {
27
+ createComponent,
28
+ instanceTypeName,
29
+ factory: ComponentFactory
30
+ };
31
+ }
32
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sources":["../../../src/components/oauth.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAMhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACvC,UAA4C,EAC5C,OAAgD,EAChD,cAAoC;IAEpC,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACxD,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,YAAY,CACf,gBAAgB,CAAC,WAAW,CAC3B;YACC,2BAA2B,EAC1B,UAAU,CAAC,yBAAyB,CAAC,yBAAyB,CAAC;YAChE,oBAAoB,EAAE,UAAU,CAAC,yBAAyB,CACzD,SAAS,EACT,cAAc,CACd;YACD,kBAAkB,EAAE,UAAU,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;YAC1E,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM;SACnC,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,gBAAgB,GAAG,gBAAgB,CAAC;IACrC,CAAC;IAED,OAAO;QACN,eAAe;QACf,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { OAuthService } from \"@3sixty/api-auth-oauth-service\";\nimport { ComponentFactory } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\n\nimport type { OAuthComponentConfig } from \"../models/config/oauthComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { OAuthComponentType } from \"../models/types/oauthComponentType.js\";\n\n/**\n * Initialise the OAuth sign in component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseOAuthComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: OAuthComponentConfig\n): EngineTypeInitialiserReturn<OAuthComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === OAuthComponentType.Service) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew OAuthService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tauthenticationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authenticationComponent\"),\n\t\t\t\t\t\tloggingComponentType: engineCore.getRegisteredSilencedType(\n\t\t\t\t\t\t\t\"logging\",\n\t\t\t\t\t\t\t\"OAuthService\"\n\t\t\t\t\t\t),\n\t\t\t\t\t\tvaultConnectorType: engineCore.getRegisteredInstanceType(\"vaultConnector\"),\n\t\t\t\t\t\tconfig: createConfig.options.config\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\tinstanceTypeName = \"o-auth-service\";\n\t}\n\n\treturn {\n\t\tcreateComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -0,0 +1,43 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { OrganizationRestClient } from "@3sixty/api-auth-account-rest-client";
4
+ import { EntityStorageOrganizationService } from "@3sixty/api-auth-account-service";
5
+ import { ComponentFactory } from "@3sixty/core";
6
+ import { EngineTypeHelper } from "@3sixty/engine-types";
7
+ import { initialiseAccountDataEntityStorage, initialiseOrganizationEntityStorage, initialiseOrganizationRequestEntityStorage } from "./authenticationAccount.js";
8
+ import { OrganizationComponentType } from "../models/types/organizationComponentType.js";
9
+ /**
10
+ * Initialise the organization component.
11
+ * @param engineCore The engine core.
12
+ * @param context The context for the engine.
13
+ * @param instanceConfig The instance config.
14
+ * @returns The instance created and the factory for it.
15
+ */
16
+ export function initialiseOrganizationComponent(engineCore, context, instanceConfig) {
17
+ let createComponent;
18
+ let instanceTypeName;
19
+ if (instanceConfig.type === OrganizationComponentType.EntityStorage) {
20
+ createComponent = (createConfig) => {
21
+ initialiseOrganizationEntityStorage(engineCore, context, createConfig.options?.organizationEntityStorageType);
22
+ initialiseAccountDataEntityStorage(engineCore, context, createConfig.options?.accountDataEntityStorageType);
23
+ // The pending requests to join an organization are rejected when it is removed.
24
+ initialiseOrganizationRequestEntityStorage(engineCore, context, createConfig.options?.organizationRequestEntityStorageType);
25
+ return new EntityStorageOrganizationService(EngineTypeHelper.mergeConfig({
26
+ identityComponentType: engineCore.getRegisteredInstanceType("identityComponent"),
27
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent"),
28
+ authenticationRateServiceType: engineCore.getRegisteredInstanceType("authenticationRateComponent")
29
+ }, createConfig.options));
30
+ };
31
+ instanceTypeName = "entity-storage-organization-service";
32
+ }
33
+ else if (instanceConfig.type === OrganizationComponentType.RestClient) {
34
+ createComponent = (createConfig) => new OrganizationRestClient(EngineTypeHelper.mergeConfig(createConfig.options));
35
+ instanceTypeName = "organization-rest-client";
36
+ }
37
+ return {
38
+ createComponent: createComponent,
39
+ instanceTypeName,
40
+ factory: ComponentFactory
41
+ };
42
+ }
43
+ //# sourceMappingURL=organization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.js","sources":["../../../src/components/organization.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAMjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACN,kCAAkC,EAClC,mCAAmC,EACnC,0CAA0C,EAC1C,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAEzF;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC9C,UAA4C,EAC5C,OAAgD,EAChD,cAA2C;IAE3C,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,yBAAyB,CAAC,aAAa,EAAE,CAAC;QACrE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,mCAAmC,CAClC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,6BAA6B,CACnD,CAAC;YACF,kCAAkC,CACjC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAClD,CAAC;YACF,gFAAgF;YAChF,0CAA0C,CACzC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAC1D,CAAC;YACF,OAAO,IAAI,gCAAgC,CAC1C,gBAAgB,CAAC,WAAW,CAC3B;gBACC,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;gBAChF,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;gBAC/D,6BAA6B,EAAE,UAAU,CAAC,yBAAyB,CAClE,6BAA6B,CAC7B;aACD,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,qCAAqC,CAAC;IAC1D,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,yBAAyB,CAAC,UAAU,EAAE,CAAC;QACzE,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,sBAAsB,CACzB,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,gBAAgB,GAAG,0BAA0B,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { OrganizationRestClient } from \"@3sixty/api-auth-account-rest-client\";\nimport { EntityStorageOrganizationService } from \"@3sixty/api-auth-account-service\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\n\nimport {\n\tinitialiseAccountDataEntityStorage,\n\tinitialiseOrganizationEntityStorage,\n\tinitialiseOrganizationRequestEntityStorage\n} from \"./authenticationAccount.js\";\nimport type { OrganizationComponentConfig } from \"../models/config/organizationComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { OrganizationComponentType } from \"../models/types/organizationComponentType.js\";\n\n/**\n * Initialise the organization component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseOrganizationComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: OrganizationComponentConfig\n): EngineTypeInitialiserReturn<OrganizationComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === OrganizationComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseOrganizationEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationEntityStorageType\n\t\t\t);\n\t\t\tinitialiseAccountDataEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.accountDataEntityStorageType\n\t\t\t);\n\t\t\t// The pending requests to join an organization are rejected when it is removed.\n\t\t\tinitialiseOrganizationRequestEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationRequestEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageOrganizationService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tidentityComponentType: engineCore.getRegisteredInstanceType(\"identityComponent\"),\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\"),\n\t\t\t\t\t\tauthenticationRateServiceType: engineCore.getRegisteredInstanceType(\n\t\t\t\t\t\t\t\"authenticationRateComponent\"\n\t\t\t\t\t\t)\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-organization-service\";\n\t} else if (instanceConfig.type === OrganizationComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew OrganizationRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"organization-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -0,0 +1,41 @@
1
+ // Copyright 2026 3Sixty Trade Ltd.
2
+ // SPDX-License-Identifier: Apache-2.0.
3
+ import { OrganizationRequestAdminRestClient } from "@3sixty/api-auth-account-rest-client";
4
+ import { EntityStorageOrganizationRequestAdminService } from "@3sixty/api-auth-account-service";
5
+ import { ComponentFactory } from "@3sixty/core";
6
+ import { EngineTypeHelper } from "@3sixty/engine-types";
7
+ import { initialiseAccountDataEntityStorage, initialiseOrganizationEntityStorage, initialiseOrganizationRequestEntityStorage } from "./authenticationAccount.js";
8
+ import { OrganizationRequestAdminComponentType } from "../models/types/organizationRequestAdminComponentType.js";
9
+ /**
10
+ * Initialise the organization request admin component.
11
+ * @param engineCore The engine core.
12
+ * @param context The context for the engine.
13
+ * @param instanceConfig The instance config.
14
+ * @returns The instance created and the factory for it.
15
+ */
16
+ export function initialiseOrganizationRequestAdminComponent(engineCore, context, instanceConfig) {
17
+ let createComponent;
18
+ let instanceTypeName;
19
+ if (instanceConfig.type === OrganizationRequestAdminComponentType.EntityStorage) {
20
+ createComponent = (createConfig) => {
21
+ initialiseAccountDataEntityStorage(engineCore, context, createConfig.options?.accountDataEntityStorageType);
22
+ initialiseOrganizationRequestEntityStorage(engineCore, context, createConfig.options?.organizationRequestEntityStorageType);
23
+ initialiseOrganizationEntityStorage(engineCore, context, createConfig.options?.organizationEntityStorageType);
24
+ return new EntityStorageOrganizationRequestAdminService(EngineTypeHelper.mergeConfig({
25
+ identityComponentType: engineCore.getRegisteredInstanceType("identityComponent"),
26
+ authorizationComponentType: engineCore.getRegisteredInstanceType("authorizationComponent")
27
+ }, createConfig.options));
28
+ };
29
+ instanceTypeName = "entity-storage-organization-request-admin-service";
30
+ }
31
+ else if (instanceConfig.type === OrganizationRequestAdminComponentType.RestClient) {
32
+ createComponent = (createConfig) => new OrganizationRequestAdminRestClient(EngineTypeHelper.mergeConfig(createConfig.options));
33
+ instanceTypeName = "organization-request-admin-rest-client";
34
+ }
35
+ return {
36
+ createComponent: createComponent,
37
+ instanceTypeName,
38
+ factory: ComponentFactory
39
+ };
40
+ }
41
+ //# sourceMappingURL=organizationRequestAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizationRequestAdmin.js","sources":["../../../src/components/organizationRequestAdmin.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,uCAAuC;AACvC,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,4CAA4C,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAmB,MAAM,cAAc,CAAC;AAMjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACN,kCAAkC,EAClC,mCAAmC,EACnC,0CAA0C,EAC1C,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,qCAAqC,EAAE,MAAM,0DAA0D,CAAC;AAEjH;;;;;;GAMG;AACH,MAAM,UAAU,2CAA2C,CAC1D,UAA4C,EAC5C,OAAgD,EAChD,cAAuD;IAEvD,IAAI,eAAe,CAAC;IACpB,IAAI,gBAAgB,CAAC;IAErB,IAAI,cAAc,CAAC,IAAI,KAAK,qCAAqC,CAAC,aAAa,EAAE,CAAC;QACjF,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE;YACzD,kCAAkC,CACjC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,4BAA4B,CAClD,CAAC;YACF,0CAA0C,CACzC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAC1D,CAAC;YACF,mCAAmC,CAClC,UAAU,EACV,OAAO,EACP,YAAY,CAAC,OAAO,EAAE,6BAA6B,CACnD,CAAC;YACF,OAAO,IAAI,4CAA4C,CACtD,gBAAgB,CAAC,WAAW,CAC3B;gBACC,qBAAqB,EAAE,UAAU,CAAC,yBAAyB,CAAC,mBAAmB,CAAC;gBAChF,0BAA0B,EACzB,UAAU,CAAC,yBAAyB,CAAC,wBAAwB,CAAC;aAC/D,EACD,YAAY,CAAC,OAAO,CACpB,CACD,CAAC;QACH,CAAC,CAAC;QACF,gBAAgB,GAAG,mDAAmD,CAAC;IACxE,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,qCAAqC,CAAC,UAAU,EAAE,CAAC;QACrF,eAAe,GAAG,CAAC,YAAmC,EAAE,EAAE,CACzD,IAAI,kCAAkC,CACrC,gBAAgB,CAAC,WAAW,CAAqC,YAAY,CAAC,OAAO,CAAC,CACtF,CAAC;QACH,gBAAgB,GAAG,wCAAwC,CAAC;IAC7D,CAAC;IAED,OAAO;QACN,eAAe,EAAE,eAAsE;QACvF,gBAAgB;QAChB,OAAO,EAAE,gBAAgB;KACzB,CAAC;AACH,CAAC","sourcesContent":["// Copyright 2026 3Sixty Trade Ltd.\n// SPDX-License-Identifier: Apache-2.0.\nimport { OrganizationRequestAdminRestClient } from \"@3sixty/api-auth-account-rest-client\";\nimport { EntityStorageOrganizationRequestAdminService } from \"@3sixty/api-auth-account-service\";\nimport { ComponentFactory, type IComponent } from \"@3sixty/core\";\nimport type {\n\tEngineTypeInitialiserReturn,\n\tIEngineCore,\n\tIEngineCoreContext\n} from \"@3sixty/engine-models\";\nimport { EngineTypeHelper } from \"@3sixty/engine-types\";\n\nimport {\n\tinitialiseAccountDataEntityStorage,\n\tinitialiseOrganizationEntityStorage,\n\tinitialiseOrganizationRequestEntityStorage\n} from \"./authenticationAccount.js\";\nimport type { OrganizationRequestAdminComponentConfig } from \"../models/config/organizationRequestAdminComponentConfig.js\";\nimport type { IEngineServerConfig } from \"../models/IEngineServerConfig.js\";\nimport { OrganizationRequestAdminComponentType } from \"../models/types/organizationRequestAdminComponentType.js\";\n\n/**\n * Initialise the organization request admin component.\n * @param engineCore The engine core.\n * @param context The context for the engine.\n * @param instanceConfig The instance config.\n * @returns The instance created and the factory for it.\n */\nexport function initialiseOrganizationRequestAdminComponent(\n\tengineCore: IEngineCore<IEngineServerConfig>,\n\tcontext: IEngineCoreContext<IEngineServerConfig>,\n\tinstanceConfig: OrganizationRequestAdminComponentConfig\n): EngineTypeInitialiserReturn<OrganizationRequestAdminComponentConfig, typeof ComponentFactory> {\n\tlet createComponent;\n\tlet instanceTypeName;\n\n\tif (instanceConfig.type === OrganizationRequestAdminComponentType.EntityStorage) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) => {\n\t\t\tinitialiseAccountDataEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.accountDataEntityStorageType\n\t\t\t);\n\t\t\tinitialiseOrganizationRequestEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationRequestEntityStorageType\n\t\t\t);\n\t\t\tinitialiseOrganizationEntityStorage(\n\t\t\t\tengineCore,\n\t\t\t\tcontext,\n\t\t\t\tcreateConfig.options?.organizationEntityStorageType\n\t\t\t);\n\t\t\treturn new EntityStorageOrganizationRequestAdminService(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(\n\t\t\t\t\t{\n\t\t\t\t\t\tidentityComponentType: engineCore.getRegisteredInstanceType(\"identityComponent\"),\n\t\t\t\t\t\tauthorizationComponentType:\n\t\t\t\t\t\t\tengineCore.getRegisteredInstanceType(\"authorizationComponent\")\n\t\t\t\t\t},\n\t\t\t\t\tcreateConfig.options\n\t\t\t\t)\n\t\t\t);\n\t\t};\n\t\tinstanceTypeName = \"entity-storage-organization-request-admin-service\";\n\t} else if (instanceConfig.type === OrganizationRequestAdminComponentType.RestClient) {\n\t\tcreateComponent = (createConfig: typeof instanceConfig) =>\n\t\t\tnew OrganizationRequestAdminRestClient(\n\t\t\t\tEngineTypeHelper.mergeConfig<(typeof instanceConfig)[\"options\"]>(createConfig.options)\n\t\t\t);\n\t\tinstanceTypeName = \"organization-request-admin-rest-client\";\n\t}\n\n\treturn {\n\t\tcreateComponent: createComponent as (createConfig: typeof instanceConfig) => IComponent,\n\t\tinstanceTypeName,\n\t\tfactory: ComponentFactory\n\t};\n}\n"]}
@@ -1,15 +1,18 @@
1
1
  // Copyright 2024 IOTA Stiftung.
2
+ // Copyright 2026 3Sixty Trade Ltd.
2
3
  // SPDX-License-Identifier: Apache-2.0.
3
- import { AuthHeaderProcessor, initSchema as initSchemaAuthEntityStorage } from "@3sixty/api-auth-entity-storage-service";
4
+ import { AuthenticationAccountProcessor } from "@3sixty/api-auth-account-service";
5
+ import { AuthHeaderProcessor } from "@3sixty/api-auth-entity-storage-service";
4
6
  import { TenantOverrideProcessor } from "@3sixty/api-auth-service";
5
7
  import { RestRouteProcessorFactory } from "@3sixty/api-models";
6
- import { ContextIdProcessor, LoggingProcessor, RestRouteProcessor, StaticContextIdProcessor } from "@3sixty/api-processors";
8
+ import { ContextIdProcessor, LoggingProcessor, OriginCheckProcessor, RestRouteProcessor, StaticContextIdProcessor } from "@3sixty/api-processors";
7
9
  import { TenantProcessor, SingleTenantProcessor } from "@3sixty/api-tenant-processor";
8
10
  import { AuthorizationRouteProcessor } from "@3sixty/authorization-service";
9
- import { ContextIdHelper, ContextIdKeys } from "@3sixty/context";
10
- import { EngineTypeHelper, initialiseEntityStorageConnector } from "@3sixty/engine-types";
11
+ import { EngineTypeHelper } from "@3sixty/engine-types";
11
12
  import { MetricsRouteProcessor } from "@3sixty/telemetry-processors";
12
13
  import { TracingRouteProcessor } from "@3sixty/tracing-processors";
14
+ import { initialiseAuthenticationUserEntityStorage } from "./authentication.js";
15
+ import { initialiseAccountDataEntityStorage } from "./authenticationAccount.js";
13
16
  import { RestRouteProcessorType } from "../models/types/restRouteProcessorType.js";
14
17
  /**
15
18
  * Initialise the rest route processor.
@@ -23,11 +26,7 @@ export function initialiseRestRouteProcessorComponent(engineCore, context, insta
23
26
  let instanceTypeName;
24
27
  if (instanceConfig.type === RestRouteProcessorType.AuthHeader) {
25
28
  createComponent = (createConfig) => {
26
- initSchemaAuthEntityStorage();
27
- initialiseEntityStorageConnector(engineCore, context, createConfig.options?.userEntityStorageType, "AuthenticationUser", ContextIdHelper.pickKeysFromAvailable(engineCore.getContextIdKeys(), [
28
- ContextIdKeys.Node,
29
- ContextIdKeys.Tenant
30
- ]));
29
+ initialiseAuthenticationUserEntityStorage(engineCore, context, createConfig.options?.userEntityStorageType);
31
30
  return new AuthHeaderProcessor(EngineTypeHelper.mergeConfig({
32
31
  vaultConnectorType: engineCore.getRegisteredInstanceType("vaultConnector"),
33
32
  tenantAdminComponentType: engineCore.getRegisteredInstanceTypeOptional("tenantAdminComponent")
@@ -39,6 +38,13 @@ export function initialiseRestRouteProcessorComponent(engineCore, context, insta
39
38
  };
40
39
  instanceTypeName = "auth-header-processor";
41
40
  }
41
+ else if (instanceConfig.type === RestRouteProcessorType.AuthenticationAccount) {
42
+ createComponent = (createConfig) => {
43
+ initialiseAccountDataEntityStorage(engineCore, context, createConfig.options?.accountDataEntityStorageType);
44
+ return new AuthenticationAccountProcessor(EngineTypeHelper.mergeConfig(createConfig.options));
45
+ };
46
+ instanceTypeName = "authentication-account-processor";
47
+ }
42
48
  else if (instanceConfig.type === RestRouteProcessorType.Logging) {
43
49
  createComponent = (createConfig) => new LoggingProcessor(EngineTypeHelper.mergeConfig({
44
50
  loggingComponentType: engineCore.getRegisteredSilencedType("logging", "LoggingProcessor")
@@ -111,6 +117,10 @@ export function initialiseRestRouteProcessorComponent(engineCore, context, insta
111
117
  }, createConfig.options));
112
118
  instanceTypeName = "authorization-route-processor";
113
119
  }
120
+ else if (instanceConfig.type === RestRouteProcessorType.OriginCheck) {
121
+ createComponent = (createConfig) => new OriginCheckProcessor(EngineTypeHelper.mergeConfig(createConfig.options));
122
+ instanceTypeName = "origin-check-processor";
123
+ }
114
124
  return {
115
125
  createComponent: createComponent,
116
126
  instanceTypeName,