@ibgib/node-gib 0.0.14 → 0.0.17

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 (218) hide show
  1. package/data/identity_index/email/hashes/32/13/49/e64f32730f01a61ada211f29eaf0a210fc2386b668ad04d7e8a9b16766.json +4 -0
  2. package/dist/email/email-helpers.d.mts.map +1 -1
  3. package/dist/email/email-helpers.mjs.map +1 -1
  4. package/dist/email/index.d.mts +3 -0
  5. package/dist/email/index.d.mts.map +1 -1
  6. package/dist/email/index.mjs +3 -0
  7. package/dist/email/index.mjs.map +1 -1
  8. package/dist/email/verify/email-verify-constants.d.mts +3 -0
  9. package/dist/email/verify/email-verify-constants.d.mts.map +1 -0
  10. package/dist/email/verify/email-verify-constants.mjs +3 -0
  11. package/dist/email/verify/email-verify-constants.mjs.map +1 -0
  12. package/dist/email/verify/email-verify-helpers.d.mts +107 -0
  13. package/dist/email/verify/email-verify-helpers.d.mts.map +1 -0
  14. package/dist/email/verify/email-verify-helpers.mjs +357 -0
  15. package/dist/email/verify/email-verify-helpers.mjs.map +1 -0
  16. package/dist/email/verify/email-verify-types.d.mts +41 -0
  17. package/dist/email/verify/email-verify-types.d.mts.map +1 -0
  18. package/dist/email/verify/email-verify-types.mjs +2 -0
  19. package/dist/email/verify/email-verify-types.mjs.map +1 -0
  20. package/dist/identity/sso/custodian-auth-helpers.d.mts +45 -0
  21. package/dist/identity/sso/custodian-auth-helpers.d.mts.map +1 -0
  22. package/dist/identity/sso/custodian-auth-helpers.mjs +108 -0
  23. package/dist/identity/sso/custodian-auth-helpers.mjs.map +1 -0
  24. package/dist/identity/sso/sso-config-helper.d.mts +7 -0
  25. package/dist/identity/sso/sso-config-helper.d.mts.map +1 -0
  26. package/dist/identity/sso/sso-config-helper.mjs +42 -0
  27. package/dist/identity/sso/sso-config-helper.mjs.map +1 -0
  28. package/dist/identity/sso/sso-custodian-service.d.mts +139 -0
  29. package/dist/identity/sso/sso-custodian-service.d.mts.map +1 -0
  30. package/dist/identity/sso/sso-custodian-service.mjs +471 -0
  31. package/dist/identity/sso/sso-custodian-service.mjs.map +1 -0
  32. package/dist/identity/sso/sso-types.d.mts +71 -0
  33. package/dist/identity/sso/sso-types.d.mts.map +1 -0
  34. package/dist/identity/sso/sso-types.mjs +7 -0
  35. package/dist/identity/sso/sso-types.mjs.map +1 -0
  36. package/dist/index.d.mts +5 -1
  37. package/dist/index.d.mts.map +1 -1
  38. package/dist/index.mjs +5 -1
  39. package/dist/index.mjs.map +1 -1
  40. package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -1
  41. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +9 -2
  42. package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -1
  43. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts +29 -0
  44. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts.map +1 -0
  45. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs +149 -0
  46. package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs.map +1 -0
  47. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts +24 -0
  48. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts.map +1 -0
  49. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs +212 -0
  50. package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs.map +1 -0
  51. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts +37 -0
  52. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts.map +1 -0
  53. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs +192 -0
  54. package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs.map +1 -0
  55. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts +33 -0
  56. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts.map +1 -0
  57. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs +173 -0
  58. package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map +1 -0
  59. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -1
  60. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +2 -3
  61. package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -1
  62. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -1
  63. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +38 -3
  64. package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -1
  65. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -1
  66. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +54 -24
  67. package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -1
  68. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -1
  69. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +13 -13
  70. package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -1
  71. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +1 -1
  72. package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -1
  73. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +3 -3
  74. package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -1
  75. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -1
  76. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +28 -15
  77. package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -1
  78. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +29 -15
  79. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -1
  80. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +105 -108
  81. package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
  82. package/dist/serve-gib/identity-index/identity-index-constants.d.mts +3 -2
  83. package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -1
  84. package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -2
  85. package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -1
  86. package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -1
  87. package/dist/serve-gib/identity-index/identity-index-helpers.mjs +28 -11
  88. package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -1
  89. package/dist/serve-gib/identity-index/identity-index-service.d.mts +20 -3
  90. package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
  91. package/dist/serve-gib/identity-index/identity-index-service.mjs +134 -18
  92. package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
  93. package/dist/serve-gib/identity-index/identity-index-types.d.mts +4 -2
  94. package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -1
  95. package/dist/serve-gib/index.d.mts +4 -0
  96. package/dist/serve-gib/index.d.mts.map +1 -1
  97. package/dist/serve-gib/index.mjs +12 -0
  98. package/dist/serve-gib/index.mjs.map +1 -1
  99. package/dist/serve-gib/path-constants.d.mts +17 -0
  100. package/dist/serve-gib/path-constants.d.mts.map +1 -1
  101. package/dist/serve-gib/path-constants.mjs +17 -0
  102. package/dist/serve-gib/path-constants.mjs.map +1 -1
  103. package/e2e/identity-custodian-lifecycle.e2e.md +93 -0
  104. package/e2e/identity-sso-lifecycle.e2e.md +132 -0
  105. package/package.json +5 -5
  106. package/src/email/email-helpers.mts +0 -1
  107. package/src/email/index.mts +3 -0
  108. package/src/email/verify/email-verify-constants.mts +3 -0
  109. package/src/email/verify/email-verify-helpers.mts +466 -0
  110. package/src/email/verify/email-verify-types.mts +47 -0
  111. package/src/identity/sso/custodian-auth-helpers.mts +146 -0
  112. package/src/identity/sso/custodian-auth-helpers.respec.mts +97 -0
  113. package/src/identity/sso/sso-config-helper.mts +52 -0
  114. package/src/identity/sso/sso-custodian-service.mts +566 -0
  115. package/src/identity/sso/sso-custodian-service.respec.mts +297 -0
  116. package/src/identity/sso/sso-types.mts +80 -0
  117. package/src/index.mts +14 -0
  118. package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +8 -2
  119. package/src/serve-gib/handlers/api/email/email-verification-code.handler.mts +163 -0
  120. package/src/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mts +231 -0
  121. package/src/serve-gib/handlers/api/email/email-verify.respec.mts +183 -0
  122. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts +233 -0
  123. package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.respec.mts +93 -0
  124. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts +210 -0
  125. package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +112 -0
  126. package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +2 -4
  127. package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +42 -3
  128. package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +46 -23
  129. package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +11 -15
  130. package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +1 -1
  131. package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +3 -3
  132. package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +29 -17
  133. package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +132 -125
  134. package/src/serve-gib/identity-index/identity-index-constants.mts +5 -2
  135. package/src/serve-gib/identity-index/identity-index-helpers.mts +26 -12
  136. package/src/serve-gib/identity-index/identity-index-service.mts +133 -16
  137. package/src/serve-gib/identity-index/identity-index-service.respec.mts +1 -1
  138. package/src/serve-gib/identity-index/identity-index-types.mts +4 -2
  139. package/src/serve-gib/index.mts +12 -0
  140. package/src/serve-gib/path-constants.mts +20 -0
  141. package/tsconfig.json +2 -2
  142. package/tsconfig.test.json +1 -1
  143. package/dist/assumptions.respec.d.mts +0 -2
  144. package/dist/assumptions.respec.d.mts.map +0 -1
  145. package/dist/assumptions.respec.mjs +0 -41
  146. package/dist/assumptions.respec.mjs.map +0 -1
  147. package/dist/email/email-service.respec.d.mts +0 -2
  148. package/dist/email/email-service.respec.d.mts.map +0 -1
  149. package/dist/email/email-service.respec.mjs +0 -115
  150. package/dist/email/email-service.respec.mjs.map +0 -1
  151. package/dist/serve-gib/bootstrap-helper.respec.d.mts +0 -2
  152. package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +0 -1
  153. package/dist/serve-gib/bootstrap-helper.respec.mjs +0 -85
  154. package/dist/serve-gib/bootstrap-helper.respec.mjs.map +0 -1
  155. package/dist/serve-gib/handlers/api/health.respec.d.mts +0 -2
  156. package/dist/serve-gib/handlers/api/health.respec.d.mts.map +0 -1
  157. package/dist/serve-gib/handlers/api/health.respec.mjs +0 -47
  158. package/dist/serve-gib/handlers/api/health.respec.mjs.map +0 -1
  159. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +0 -2
  160. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +0 -1
  161. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +0 -98
  162. package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +0 -1
  163. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +0 -2
  164. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +0 -1
  165. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +0 -131
  166. package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +0 -1
  167. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +0 -2
  168. package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +0 -1
  169. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +0 -109
  170. package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +0 -1
  171. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +0 -2
  172. package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +0 -1
  173. package/dist/serve-gib/keystone-schema-helpers.respec.mjs +0 -68
  174. package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +0 -1
  175. package/dist/serve-gib/path-helper.respec.d.mts +0 -2
  176. package/dist/serve-gib/path-helper.respec.d.mts.map +0 -1
  177. package/dist/serve-gib/path-helper.respec.mjs +0 -83
  178. package/dist/serve-gib/path-helper.respec.mjs.map +0 -1
  179. package/dist/serve-gib/serve-gib.respec.d.mts +0 -2
  180. package/dist/serve-gib/serve-gib.respec.d.mts.map +0 -1
  181. package/dist/serve-gib/serve-gib.respec.mjs +0 -85
  182. package/dist/serve-gib/serve-gib.respec.mjs.map +0 -1
  183. package/dist/spec-helper.node.respec.d.mts +0 -13
  184. package/dist/spec-helper.node.respec.d.mts.map +0 -1
  185. package/dist/spec-helper.node.respec.mjs +0 -50
  186. package/dist/spec-helper.node.respec.mjs.map +0 -1
  187. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  188. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  189. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs +0 -52
  190. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  191. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  192. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  193. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs +0 -53
  194. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  195. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  196. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  197. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs +0 -59
  198. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  199. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
  200. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.d.mts.map +0 -1
  201. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs +0 -55
  202. package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
  203. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +0 -2
  204. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +0 -1
  205. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +0 -67
  206. package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +0 -1
  207. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +0 -2
  208. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +0 -1
  209. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +0 -67
  210. package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +0 -1
  211. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +0 -2
  212. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +0 -1
  213. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +0 -68
  214. package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +0 -1
  215. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +0 -2
  216. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +0 -1
  217. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +0 -69
  218. package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs.map +0 -1
@@ -0,0 +1,192 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-genesis.handler
3
+ *
4
+ * POST /api/identity/custodian/genesis
5
+ *
6
+ * Single-turn passwordless onboarding & custodian genesis endpoint.
7
+ * Returns the primary identity keystone (or primaryTjpAddr) along with a fresh,
8
+ * single-turn `CustodianRequirements` payload containing `authCode` and single-use `nonce`.
9
+ */
10
+ import * as fs from 'node:fs/promises';
11
+ import { extractErrorMsg, hash, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
12
+ import { getTjpAddr } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
13
+ import { getDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
14
+ import { KeystoneProfileBuilder } from '@ibgib/core-gib/dist/keystone/policy/keystone-profile-builder.mjs';
15
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
16
+ import { validateEmail } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
17
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
18
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
19
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
20
+ import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
21
+ import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
22
+ import { normalizeEmail } from '../../../identity-index/identity-index-helpers.mjs';
23
+ import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
24
+ import { generateCustodianRequirements } from '../../../../identity/sso/custodian-auth-helpers.mjs';
25
+ import { getPendingStagingDir, getPendingTjpHash, verifyPendingCode } from '../../../../email/verify/email-verify-helpers.mjs';
26
+ const logalot = GLOBAL_LOG_A_LOT || true;
27
+ /**
28
+ * POST /api/identity/custodian/genesis
29
+ */
30
+ export class KeystoneCustodianGenesisHandler extends ServeGibHandlerBase {
31
+ lc = `[${KeystoneCustodianGenesisHandler.name}]`;
32
+ method = 'POST';
33
+ regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_GENESIS;
34
+ async handleRouteImpl(reqCtx) {
35
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
36
+ try {
37
+ if (logalot) {
38
+ console.log(`${lc} starting... (I: a123456789abcdef0123456789b0001)`);
39
+ }
40
+ if (reqCtx.method !== 'POST') {
41
+ return this.error(405, 'Method Not Allowed');
42
+ }
43
+ if (!reqCtx.body) {
44
+ return this.error(400, 'Request body is empty (E: b123456789abcdef0123456789b0002)');
45
+ }
46
+ let body;
47
+ try {
48
+ body = JSON.parse(reqCtx.body);
49
+ }
50
+ catch {
51
+ return this.error(400, 'Request body must be valid JSON (E: c123456789abcdef0123456789b0003)');
52
+ }
53
+ const { email, username, code } = body;
54
+ if (!email || !validateEmail(email)) {
55
+ return this.error(400, 'Invalid email address format (E: d123456789abcdef0123456789b0004)');
56
+ }
57
+ const normEmail = normalizeEmail(email);
58
+ const indexService = getIdentityIndexService();
59
+ const ssoConfig = loadSsoServerConfig();
60
+ const serverSecret = ssoConfig.ssoServerKdfSecret;
61
+ const existing = await indexService.lookupIdentityByEmail({ email: normEmail });
62
+ const effectivePrimaryTjpAddr = existing ? existing.primaryTjpAddr : `pending:${normEmail}`;
63
+ // Verify 6-digit OTP code if provided or if staging record exists
64
+ if (code || !existing) {
65
+ if (!code || typeof code !== 'string' || code.trim().length !== 6) {
66
+ return this.error(400, '6-digit verification code is required (E: e123456789abcdef0123456789b0009)');
67
+ }
68
+ const tjpHash = await getPendingTjpHash(effectivePrimaryTjpAddr);
69
+ const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
70
+ if (!pendingInfo || pendingInfo.isExpired) {
71
+ return this.error(400, 'Verification record missing or expired. Please request a new verification code. (E: f123456789abcdef0123456789b0010)');
72
+ }
73
+ const codeVerifyResult = await verifyPendingCode({
74
+ pendingDir: pendingInfo.pendingDir,
75
+ code,
76
+ });
77
+ if (!codeVerifyResult.valid) {
78
+ return this.error(400, codeVerifyResult.error || 'Invalid verification code (E: g123456789abcdef0123456789b0011)');
79
+ }
80
+ }
81
+ let primaryTjpAddr;
82
+ let primaryKeystone;
83
+ let isNewIdentity = false;
84
+ if (existing) {
85
+ // Identity already exists — retrieve primary identity info
86
+ primaryTjpAddr = existing.primaryTjpAddr;
87
+ console.log(`${lc} Found existing identity for ${normEmail}: ${primaryTjpAddr} (I: e123456789abcdef0123456789b0005)`);
88
+ // Bootstrap domain space to fetch primary keystone frame
89
+ const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
90
+ const space = await metaspace.getLocalUserSpace({ lock: false });
91
+ if (space) {
92
+ const latestAddr = await metaspace.getLatestAddr({ addr: primaryTjpAddr, space }) ?? primaryTjpAddr;
93
+ const getRes = await metaspace.get({ addrs: [latestAddr], space });
94
+ primaryKeystone = getRes.ibGibs?.[0];
95
+ }
96
+ }
97
+ else {
98
+ // New custodian identity creation
99
+ isNewIdentity = true;
100
+ console.log(`${lc} Creating new custodian primary identity for ${normEmail} (I: f123456789abcdef0123456789b0006)`);
101
+ const defaultUsername = username || normEmail.split('@')[0];
102
+ const primaryBuilder = KeystoneProfileBuilder.buildKeystone('sync')
103
+ .withUsername(defaultUsername)
104
+ .withDescription(`Full Custodian Primary Identity for ${normEmail}`)
105
+ .withDetails({
106
+ emails: [normEmail],
107
+ custodyMode: 'full',
108
+ });
109
+ const configs = await primaryBuilder.compileConfigs();
110
+ const primarySecret = await hash({ s: `${serverSecret}_custodian_${normEmail}` });
111
+ // Bootstrap temporary domain metaspace to perform genesis
112
+ const tempMetaspace = await bootstrapDomainMetaspace(`temp^${await getUUID()}`, reqCtx.dataDir);
113
+ const tempSpace = await tempMetaspace.getLocalUserSpace({ lock: false });
114
+ if (!tempSpace) {
115
+ throw new Error(`Failed to create temp domain space for new primary identity (E: 123456789abcdef0123456789b0007)`);
116
+ }
117
+ const keystoneService = new KeystoneService_V1();
118
+ primaryKeystone = await keystoneService.genesis({
119
+ masterSecret: primarySecret,
120
+ emails: [normEmail],
121
+ frameDetails: primaryBuilder.getFrameDetails(),
122
+ configs,
123
+ metaspace: tempMetaspace,
124
+ space: tempSpace,
125
+ isPrimary: true
126
+ });
127
+ primaryTjpAddr = getTjpAddr({ ibGib: primaryKeystone, defaultIfNone: 'incomingAddr' });
128
+ // Bootstrap permanent domain space for primaryTjpAddr and persist primary keystone
129
+ const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
130
+ const space = await metaspace.getLocalUserSpace({ lock: false });
131
+ if (!space) {
132
+ throw new Error(`Failed to create domain space for new primary identity ${primaryTjpAddr} (E: 123456789abcdef0123456789b0008)`);
133
+ }
134
+ await metaspace.put({ ibGibs: [primaryKeystone], space });
135
+ await metaspace.registerNewIbGib({ ibGib: primaryKeystone, space });
136
+ // Register in identity reverse index
137
+ await indexService.registerEmailIndex({
138
+ email: normEmail,
139
+ primaryTjpAddr
140
+ });
141
+ // Clean up pending staging directory if present
142
+ const tjpHash = await getPendingTjpHash(effectivePrimaryTjpAddr);
143
+ const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
144
+ if (pendingInfo?.pendingDir) {
145
+ try {
146
+ await fs.rm(pendingInfo.pendingDir, { recursive: true, force: true });
147
+ }
148
+ catch { }
149
+ }
150
+ }
151
+ // Generate single-turn CustodianRequirements for client delegate registration
152
+ const custodianReqs = await generateCustodianRequirements({
153
+ primaryTjpAddr,
154
+ serverSecret
155
+ });
156
+ // Extract complete primary keystone dependency graph
157
+ let primaryGraph;
158
+ if (primaryKeystone) {
159
+ const domainMetaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
160
+ const domainSpace = await domainMetaspace.getLocalUserSpace({ lock: false });
161
+ if (domainSpace) {
162
+ primaryGraph = await getDependencyGraph({
163
+ ibGib: primaryKeystone,
164
+ space: domainSpace,
165
+ live: false
166
+ });
167
+ }
168
+ }
169
+ const responseBody = {
170
+ success: true,
171
+ isNewIdentity,
172
+ primaryTjpAddr,
173
+ primaryKeystone,
174
+ primaryGraph,
175
+ custodianReqs,
176
+ message: isNewIdentity ? 'Custodian primary identity created.' : 'Custodian identity located.'
177
+ };
178
+ return this.ok(responseBody, isNewIdentity ? 201 : 200);
179
+ }
180
+ catch (error) {
181
+ const emsg = extractErrorMsg(error);
182
+ console.error(`${lc} ${emsg}`);
183
+ return this.error(500, emsg);
184
+ }
185
+ finally {
186
+ if (logalot) {
187
+ console.log(`${lc} complete.`);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ //# sourceMappingURL=keystone-custodian-genesis.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-custodian-genesis.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler
3
+ *
4
+ * POST /api/identity/custodian/register-delegate
5
+ *
6
+ * Validates a client delegate keystone containing single-turn `custodianReqs`,
7
+ * enforces single-use nonce reservation, verifies cryptographic `authCode`,
8
+ * evolves the server-held primary identity keystone to link the delegate,
9
+ * and returns the updated `evolvedPrimaryKeystone`.
10
+ */
11
+ import { FlatIbGibGraph } from '@ibgib/core-gib/dist/common/other/graph-types.mjs';
12
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
13
+ import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
14
+ export interface CustodianRegisterDelegateRequestBody {
15
+ delegateKeystone: any;
16
+ }
17
+ export interface CustodianRegisterDelegateResponseBody {
18
+ success: boolean;
19
+ primaryTjpAddr: string;
20
+ evolvedPrimaryKeystone: any;
21
+ primaryGraph?: FlatIbGibGraph;
22
+ message?: string;
23
+ }
24
+ /**
25
+ * POST /api/identity/custodian/register-delegate
26
+ */
27
+ export declare class KeystoneCustodianRegisterDelegateHandler extends ServeGibHandlerBase<undefined, undefined> {
28
+ protected lc: string;
29
+ protected method: ServeGibHttpMethod;
30
+ protected regex: RegExp;
31
+ protected handleRouteImpl(reqCtx: RequestContext<undefined, undefined>): Promise<ResponseResult | undefined>;
32
+ }
33
+ //# sourceMappingURL=keystone-custodian-register-delegate.handler.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-custodian-register-delegate.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAMnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AASxF,MAAM,WAAW,oCAAoC;IACjD,gBAAgB,EAAE,GAAG,CAAC;CACzB;AAED,MAAM,WAAW,qCAAqC;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,wCAAyC,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IACnG,UAAmB,EAAE,EAAE,MAAM,CAAwD;IACrF,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAyD;IAEjF,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAyJrC;CACJ"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * @module serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler
3
+ *
4
+ * POST /api/identity/custodian/register-delegate
5
+ *
6
+ * Validates a client delegate keystone containing single-turn `custodianReqs`,
7
+ * enforces single-use nonce reservation, verifies cryptographic `authCode`,
8
+ * evolves the server-held primary identity keystone to link the delegate,
9
+ * and returns the updated `evolvedPrimaryKeystone`.
10
+ */
11
+ import * as fs from 'fs/promises';
12
+ import * as path from 'path';
13
+ import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
14
+ import { validateIbGibIntrinsically } from '@ibgib/ts-gib/dist/V1/validate-helper.mjs';
15
+ import { getDependencyGraph } from '@ibgib/core-gib/dist/common/other/graph-helper.mjs';
16
+ import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
17
+ import { KEYSTONE_VERB_SYNC, KEYSTONE_VERB_CONNECT } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
18
+ import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
19
+ import { ServeGibHandlerBase } from '../../handler-base.mjs';
20
+ import { API_PATH_REGEXES } from '../../../path-constants.mjs';
21
+ import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
22
+ import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
23
+ import { getAuthCustodianIndex, verifyCustodianRequirements } from '../../../../identity/sso/custodian-auth-helpers.mjs';
24
+ const logalot = GLOBAL_LOG_A_LOT || true;
25
+ /**
26
+ * POST /api/identity/custodian/register-delegate
27
+ */
28
+ export class KeystoneCustodianRegisterDelegateHandler extends ServeGibHandlerBase {
29
+ lc = `[${KeystoneCustodianRegisterDelegateHandler.name}]`;
30
+ method = 'POST';
31
+ regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_REGISTER_DELEGATE;
32
+ async handleRouteImpl(reqCtx) {
33
+ const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
34
+ let authFilePathToClean;
35
+ try {
36
+ if (logalot) {
37
+ console.log(`${lc} starting... (I: a23456789abcdef0123456789c0001)`);
38
+ }
39
+ if (reqCtx.method !== 'POST') {
40
+ return this.error(405, 'Method Not Allowed');
41
+ }
42
+ if (!reqCtx.body) {
43
+ return this.error(400, 'Request body is empty (E: b23456789abcdef0123456789c0002)');
44
+ }
45
+ let body;
46
+ try {
47
+ body = JSON.parse(reqCtx.body);
48
+ }
49
+ catch {
50
+ return this.error(400, 'Request body must be valid JSON (E: c23456789abcdef0123456789c0003)');
51
+ }
52
+ const { delegateKeystone } = body;
53
+ if (!delegateKeystone) {
54
+ return this.error(400, 'Request body must contain delegateKeystone (E: d23456789abcdef0123456789c0004)');
55
+ }
56
+ // 1. Intrinsic hash validation on delegate keystone
57
+ const intrinsicErrors = await validateIbGibIntrinsically({ ibGib: delegateKeystone });
58
+ if (intrinsicErrors && intrinsicErrors.length > 0) {
59
+ return this.error(422, 'Intrinsic validation failed for delegateKeystone', { errors: intrinsicErrors });
60
+ }
61
+ // 2. Structural keystone validation
62
+ const keystoneService = new KeystoneService_V1();
63
+ const genesisErrors = await keystoneService.validateGenesisKeystone({ keystoneIbGib: delegateKeystone });
64
+ if (genesisErrors && genesisErrors.length > 0) {
65
+ return this.error(422, 'Delegate keystone structure validation failed', { errors: genesisErrors });
66
+ }
67
+ // 3. Extract and check custodianReqs from frameDetails
68
+ const frameDetails = delegateKeystone.data?.frameDetails || delegateKeystone.data;
69
+ const custodianReqs = frameDetails?.custodianReqs;
70
+ if (!custodianReqs) {
71
+ return this.error(400, 'Missing custodianReqs payload in delegate keystone frameDetails (E: e23456789abcdef0123456789c0005)');
72
+ }
73
+ const delegatePrimaryTjpAddr = frameDetails?.primaryTjpAddr;
74
+ if (delegatePrimaryTjpAddr && delegatePrimaryTjpAddr !== custodianReqs.primaryTjpAddr) {
75
+ return this.error(400, 'Primary TJP address mismatch between delegate frameDetails and custodianReqs (E: f23456789abcdef0123456789c0006)');
76
+ }
77
+ // 4. Verify cryptographic signature & expiration of custodianReqs
78
+ const ssoConfig = loadSsoServerConfig();
79
+ const serverSecret = ssoConfig.ssoServerKdfSecret;
80
+ const verifyRes = await verifyCustodianRequirements({ custodianReqs, serverSecret });
81
+ if (!verifyRes.valid) {
82
+ return this.error(401, verifyRes.error || 'Invalid custodian requirements payload');
83
+ }
84
+ // 5. Atomic Single-Turn Nonce Reservation Check (`{ flag: 'wx' }`)
85
+ const authCustodianIndex = await getAuthCustodianIndex({ custodianReqs });
86
+ const dataDir = reqCtx.dataDir || process.env.DATA_DIR || 'data';
87
+ const authDir = path.join(dataDir, 'identity_index', 'auth_custodian');
88
+ await fs.mkdir(authDir, { recursive: true });
89
+ authFilePathToClean = path.join(authDir, `${authCustodianIndex}.json`);
90
+ try {
91
+ await fs.writeFile(authFilePathToClean, JSON.stringify({
92
+ usedAt: Date.now(),
93
+ primaryTjpAddr: custodianReqs.primaryTjpAddr,
94
+ nonce: custodianReqs.nonce
95
+ }), { flag: 'wx' });
96
+ }
97
+ catch (fileErr) {
98
+ if (fileErr.code === 'EEXIST') {
99
+ return this.error(409, 'Custodian requirements payload has already been used. Nonce single-turn reservation violation.');
100
+ }
101
+ throw fileErr;
102
+ }
103
+ // 6. Evolve Server-Held Primary Identity Keystone
104
+ const metaspace = await bootstrapDomainMetaspace(custodianReqs.primaryTjpAddr, reqCtx.dataDir);
105
+ const space = await metaspace.getLocalUserSpace({ lock: false });
106
+ if (!space) {
107
+ return this.error(500, `Could not load domain space for primary identity ${custodianReqs.primaryTjpAddr}`);
108
+ }
109
+ const latestPrimaryAddr = await metaspace.getLatestAddr({ addr: custodianReqs.primaryTjpAddr, space }) ?? custodianReqs.primaryTjpAddr;
110
+ const getRes = await metaspace.get({ addrs: [latestPrimaryAddr], space });
111
+ const parentKeystone = getRes.ibGibs?.[0];
112
+ if (!parentKeystone) {
113
+ return this.error(404, `Primary identity keystone not found for address ${custodianReqs.primaryTjpAddr}`);
114
+ }
115
+ // Derive server's primary custodian secret
116
+ const primaryEmail = parentKeystone.data?.emails?.[0]
117
+ || parentKeystone.data?.frameDetails?.emails?.[0]
118
+ || frameDetails?.email
119
+ || '';
120
+ if (!primaryEmail) {
121
+ return this.error(500, `Could not determine primary email for identity ${custodianReqs.primaryTjpAddr}`);
122
+ }
123
+ const primarySecret = await hash({ s: `${serverSecret}_custodian_${primaryEmail}` });
124
+ // Execute primary keystone evolution linking the new delegate
125
+ const evolvedPrimaryKeystone = await keystoneService.registerDelegate({
126
+ parentKeystone,
127
+ delegateKeystone,
128
+ masterSecret: primarySecret,
129
+ metaspace,
130
+ space,
131
+ allowedVerbs: custodianReqs.allowedVerbs || [KEYSTONE_VERB_SYNC, KEYSTONE_VERB_CONNECT],
132
+ deviceName: frameDetails?.deviceTag || 'client-delegate'
133
+ });
134
+ // Persist delegate keystone in domain space
135
+ await metaspace.put({ ibGibs: [delegateKeystone], space });
136
+ await metaspace.registerNewIbGib({ ibGib: delegateKeystone, space });
137
+ // Extract complete primary keystone dependency graph
138
+ const primaryGraph = await getDependencyGraph({
139
+ ibGib: evolvedPrimaryKeystone,
140
+ space,
141
+ live: false
142
+ });
143
+ const responseBody = {
144
+ success: true,
145
+ primaryTjpAddr: custodianReqs.primaryTjpAddr,
146
+ evolvedPrimaryKeystone,
147
+ primaryGraph,
148
+ message: 'Custodian delegate keystone registered and primary identity evolved successfully.'
149
+ };
150
+ return this.ok(responseBody, 200);
151
+ }
152
+ catch (error) {
153
+ const emsg = extractErrorMsg(error);
154
+ console.error(`${lc} ${emsg}`);
155
+ return this.error(500, emsg);
156
+ }
157
+ finally {
158
+ // Clean up single-turn reservation file after processing
159
+ if (authFilePathToClean) {
160
+ try {
161
+ await fs.unlink(authFilePathToClean);
162
+ }
163
+ catch {
164
+ // Ignore unlinking errors if already cleaned up
165
+ }
166
+ }
167
+ if (logalot) {
168
+ console.log(`${lc} complete.`);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ //# sourceMappingURL=keystone-custodian-register-delegate.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystone-custodian-register-delegate.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-check-email.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,SAAS,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IAC7F,UAAmB,EAAE,EAAE,MAAM,CAAyC;IACtE,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAAyC;IAEjE,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAgCrC;CACJ"}
1
+ {"version":3,"file":"keystone-check-email.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,SAAS,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;IAC7F,UAAmB,EAAE,EAAE,MAAM,CAAyC;IACtE,UAAmB,MAAM,EAAE,kBAAkB,CAAS;IACtD,UAAmB,KAAK,SAAyC;IAEjE,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAgCrC;CACJ"}
@@ -5,9 +5,8 @@
5
5
  *
6
6
  * Checks whether an email address is already registered in the server identity index.
7
7
  */
8
- import * as path from 'node:path';
9
8
  import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
10
- import { IdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
9
+ import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
11
10
  import { ServeGibHandlerBase } from '../../handler-base.mjs';
12
11
  import { API_PATH_REGEXES } from '../../../path-constants.mjs';
13
12
  /**
@@ -28,7 +27,7 @@ export class KeystoneCheckEmailHandler extends ServeGibHandlerBase {
28
27
  console.error(`${lc} Check-email request missing email query parameter.`);
29
28
  return this.error(400, 'Query param email is required');
30
29
  }
31
- const indexService = new IdentityIndexService({ baseDir: path.join(reqCtx.dataDir, 'index') });
30
+ const indexService = getIdentityIndexService();
32
31
  const record = await indexService.getEmailIndex({ email });
33
32
  if (record) {
34
33
  console.log(`${lc} Email '${email}' is already registered.`);
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-check-email.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,mBAAkD;IAC1E,EAAE,GAAW,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC;IACnD,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IAEvD,KAAK,CAAC,eAAe,CAC3B,MAAqD;QAErD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,qFAAqF;YACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACvD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC/F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3D,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,0BAA0B,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC,EAAE,CAAC;oBACX,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,mCAAmC;iBAC/C,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,iBAAiB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,EAAE,CAAC;gBACX,SAAS,EAAE,IAAI;aAClB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"keystone-check-email.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,mBAAkD;IAC1E,EAAE,GAAW,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC;IACnD,MAAM,GAAuB,KAAK,CAAC;IACnC,KAAK,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IAEvD,KAAK,CAAC,eAAe,CAC3B,MAAqD;QAErD,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,qFAAqF;YACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACvD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,qDAAqD,CAAC,CAAC;gBAC1E,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAE3D,IAAI,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,0BAA0B,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC,EAAE,CAAC;oBACX,SAAS,EAAE,KAAK;oBAChB,OAAO,EAAE,mCAAmC;iBAC/C,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,iBAAiB,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,EAAE,CAAC;gBACX,SAAS,EAAE,IAAI;aAClB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-evolve.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAKpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAItF,UAAU,YAAa,SAAQ,gBAAgB;IAC3C,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,UAAU;IAChB,uCAAuC;IACvC,aAAa,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,qBAAa,qBAAsB,SAAQ,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC;IACjG,UAAmB,EAAE,EAAE,MAAM,CAAqC;IAClE,UAAmB,MAAM,EAAE,KAAK,CAAS;IACzC,UAAmB,KAAK,SAAoC;IAE5D,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAarH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtG;IAED,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CA8EtG;CACJ"}
1
+ {"version":3,"file":"keystone-evolve.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAOpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAItF,UAAU,YAAa,SAAQ,gBAAgB;IAC3C,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,UAAU,UAAU;IAChB,uCAAuC;IACvC,aAAa,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,qBAAa,qBAAsB,SAAQ,gCAAgC,CAAC,YAAY,EAAE,UAAU,CAAC;IACjG,UAAmB,EAAE,EAAE,MAAM,CAAqC;IAClE,UAAmB,MAAM,EAAE,KAAK,CAAS;IACzC,UAAmB,KAAK,SAAoC;IAE5D,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAarH;IAED,UAAyB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE;QAAE,WAAW,EAAE,GAAG,CAAC;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtG;IAED,UAAyB,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAmHtG;CACJ"}
@@ -12,12 +12,14 @@
12
12
  import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
13
13
  import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
14
14
  import { validateAndRegisterEvolveKeystone } from '@ibgib/core-gib/dist/sync/sync-peer/sync-peer-websocket/sync-peer-websocket-receiver/sync-websocket-peer-helpers.mjs';
15
- import { loadSsoServerConfig } from '@ibgib/web-gib/dist/identity/sso/sso-config-helper.mjs';
16
- import { SsoCustodianService } from '@ibgib/web-gib/dist/identity/sso/sso-custodian-service.mjs';
15
+ import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
16
+ import { SsoCustodianService } from '../../../../identity/sso/sso-custodian-service.mjs';
17
17
  import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
18
+ import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
19
+ import { savePendingStagingKeystone, dispatchVerificationCode } from '../../../../email/verify/email-verify-helpers.mjs';
18
20
  import { ServeGibHandlerWithMetaspaceBase } from '../../handler-base.mjs';
19
21
  import { API_PATH_REGEXES } from '../../../path-constants.mjs';
20
- const logalot = GLOBAL_LOG_A_LOT || true;
22
+ const logalot = GLOBAL_LOG_A_LOT;
21
23
  export class KeystoneEvolveHandler extends ServeGibHandlerWithMetaspaceBase {
22
24
  lc = `[${KeystoneEvolveHandler.name}]`;
23
25
  method = 'PUT';
@@ -72,6 +74,39 @@ export class KeystoneEvolveHandler extends ServeGibHandlerWithMetaspaceBase {
72
74
  if (!space) {
73
75
  return this.error(500, 'No local user space found (E: a1144e5d6cd9641fb82d6b359f131126)');
74
76
  }
77
+ // Check for any new unverified email addresses attached to the evolved keystone
78
+ const incomingEmails = keystoneIbGib.data?.emails ?? keystoneIbGib.data?.frameDetails?.emails ?? [];
79
+ if (incomingEmails.length > 0) {
80
+ const unverifiedEmails = [];
81
+ for (const email of incomingEmails) {
82
+ const record = await getIdentityIndexService().lookupIdentityByEmail({ email });
83
+ if (!record || record.primaryTjpAddr !== domainAddr) {
84
+ unverifiedEmails.push(email);
85
+ }
86
+ }
87
+ if (unverifiedEmails.length > 0) {
88
+ console.log(`${lc} Evolved keystone contains unverified email(s): ${unverifiedEmails.join(', ')}. Staging evolution in quarantine area.`);
89
+ const saveRes = await savePendingStagingKeystone({
90
+ keystone: keystoneIbGib,
91
+ emails: unverifiedEmails,
92
+ primaryTjpAddr: domainAddr,
93
+ dataDir: reqCtx.dataDir
94
+ });
95
+ // Immediately dispatch 6-digit verification code email for first unverified email
96
+ const primaryEmail = unverifiedEmails[0];
97
+ await dispatchVerificationCode({
98
+ email: primaryEmail,
99
+ primaryTjpAddr: domainAddr,
100
+ pendingDir: saveRes.pendingDir,
101
+ });
102
+ return this.ok({
103
+ success: true,
104
+ pending: true,
105
+ addr: domainAddr,
106
+ message: 'Evolved keystone quarantined in pending staging area. 6-digit verification code sent to your email.'
107
+ }, 202);
108
+ }
109
+ }
75
110
  // Delegate all intrinsic checks, transition rules, pool restrictions, and registration/persistence to core-gib helper
76
111
  await validateAndRegisterEvolveKeystone({
77
112
  domainAddr,
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-evolve.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keystone-evolve.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-genesis.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAaH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAUxF;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IACjF,UAAmB,EAAE,EAAE,MAAM,CAAsC;IACnE,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAqC;IAE7D,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAuGrC;CACJ"}
1
+ {"version":3,"file":"keystone-genesis.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAYH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AASxF;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IACjF,UAAmB,EAAE,EAAE,MAAM,CAAsC;IACnE,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAqC;IAE7D,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAgIrC;CACJ"}