@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.
- package/data/identity_index/email/hashes/32/13/49/e64f32730f01a61ada211f29eaf0a210fc2386b668ad04d7e8a9b16766.json +4 -0
- package/dist/email/email-helpers.d.mts.map +1 -1
- package/dist/email/email-helpers.mjs.map +1 -1
- package/dist/email/index.d.mts +3 -0
- package/dist/email/index.d.mts.map +1 -1
- package/dist/email/index.mjs +3 -0
- package/dist/email/index.mjs.map +1 -1
- package/dist/email/verify/email-verify-constants.d.mts +3 -0
- package/dist/email/verify/email-verify-constants.d.mts.map +1 -0
- package/dist/email/verify/email-verify-constants.mjs +3 -0
- package/dist/email/verify/email-verify-constants.mjs.map +1 -0
- package/dist/email/verify/email-verify-helpers.d.mts +107 -0
- package/dist/email/verify/email-verify-helpers.d.mts.map +1 -0
- package/dist/email/verify/email-verify-helpers.mjs +357 -0
- package/dist/email/verify/email-verify-helpers.mjs.map +1 -0
- package/dist/email/verify/email-verify-types.d.mts +41 -0
- package/dist/email/verify/email-verify-types.d.mts.map +1 -0
- package/dist/email/verify/email-verify-types.mjs +2 -0
- package/dist/email/verify/email-verify-types.mjs.map +1 -0
- package/dist/identity/sso/custodian-auth-helpers.d.mts +45 -0
- package/dist/identity/sso/custodian-auth-helpers.d.mts.map +1 -0
- package/dist/identity/sso/custodian-auth-helpers.mjs +108 -0
- package/dist/identity/sso/custodian-auth-helpers.mjs.map +1 -0
- package/dist/identity/sso/sso-config-helper.d.mts +7 -0
- package/dist/identity/sso/sso-config-helper.d.mts.map +1 -0
- package/dist/identity/sso/sso-config-helper.mjs +42 -0
- package/dist/identity/sso/sso-config-helper.mjs.map +1 -0
- package/dist/identity/sso/sso-custodian-service.d.mts +139 -0
- package/dist/identity/sso/sso-custodian-service.d.mts.map +1 -0
- package/dist/identity/sso/sso-custodian-service.mjs +471 -0
- package/dist/identity/sso/sso-custodian-service.mjs.map +1 -0
- package/dist/identity/sso/sso-types.d.mts +71 -0
- package/dist/identity/sso/sso-types.d.mts.map +1 -0
- package/dist/identity/sso/sso-types.mjs +7 -0
- package/dist/identity/sso/sso-types.mjs.map +1 -0
- package/dist/index.d.mts +5 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +5 -1
- package/dist/index.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +9 -2
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts +29 -0
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs +149 -0
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts +24 -0
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs +212 -0
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts +37 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs +192 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts +33 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs +173 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map +1 -0
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs +2 -3
- package/dist/serve-gib/handlers/api/keystone/keystone-check-email.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs +38 -3
- package/dist/serve-gib/handlers/api/keystone/keystone-evolve.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +54 -24
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +13 -13
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-post.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs +3 -3
- package/dist/serve-gib/handlers/api/keystone/sso-config.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +28 -15
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts +29 -15
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.d.mts.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +105 -108
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-constants.d.mts +3 -2
- package/dist/serve-gib/identity-index/identity-index-constants.d.mts.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-constants.mjs +4 -2
- package/dist/serve-gib/identity-index/identity-index-constants.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-helpers.d.mts.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs +28 -11
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.d.mts +20 -3
- package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.mjs +134 -18
- package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-types.d.mts +4 -2
- package/dist/serve-gib/identity-index/identity-index-types.d.mts.map +1 -1
- package/dist/serve-gib/index.d.mts +4 -0
- package/dist/serve-gib/index.d.mts.map +1 -1
- package/dist/serve-gib/index.mjs +12 -0
- package/dist/serve-gib/index.mjs.map +1 -1
- package/dist/serve-gib/path-constants.d.mts +17 -0
- package/dist/serve-gib/path-constants.d.mts.map +1 -1
- package/dist/serve-gib/path-constants.mjs +17 -0
- package/dist/serve-gib/path-constants.mjs.map +1 -1
- package/e2e/identity-custodian-lifecycle.e2e.md +93 -0
- package/e2e/identity-sso-lifecycle.e2e.md +132 -0
- package/package.json +5 -5
- package/src/email/email-helpers.mts +0 -1
- package/src/email/index.mts +3 -0
- package/src/email/verify/email-verify-constants.mts +3 -0
- package/src/email/verify/email-verify-helpers.mts +466 -0
- package/src/email/verify/email-verify-types.mts +47 -0
- package/src/identity/sso/custodian-auth-helpers.mts +146 -0
- package/src/identity/sso/custodian-auth-helpers.respec.mts +97 -0
- package/src/identity/sso/sso-config-helper.mts +52 -0
- package/src/identity/sso/sso-custodian-service.mts +566 -0
- package/src/identity/sso/sso-custodian-service.respec.mts +297 -0
- package/src/identity/sso/sso-types.mts +80 -0
- package/src/index.mts +14 -0
- package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +8 -2
- package/src/serve-gib/handlers/api/email/email-verification-code.handler.mts +163 -0
- package/src/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mts +231 -0
- package/src/serve-gib/handlers/api/email/email-verify.respec.mts +183 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts +233 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.respec.mts +93 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts +210 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +112 -0
- package/src/serve-gib/handlers/api/keystone/keystone-check-email.handler.mts +2 -4
- package/src/serve-gib/handlers/api/keystone/keystone-evolve.handler.mts +42 -3
- package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +46 -23
- package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +11 -15
- package/src/serve-gib/handlers/api/keystone/keystone-post.handler.mts +1 -1
- package/src/serve-gib/handlers/api/keystone/sso-config.handler.mts +3 -3
- package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +29 -17
- package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +132 -125
- package/src/serve-gib/identity-index/identity-index-constants.mts +5 -2
- package/src/serve-gib/identity-index/identity-index-helpers.mts +26 -12
- package/src/serve-gib/identity-index/identity-index-service.mts +133 -16
- package/src/serve-gib/identity-index/identity-index-service.respec.mts +1 -1
- package/src/serve-gib/identity-index/identity-index-types.mts +4 -2
- package/src/serve-gib/index.mts +12 -0
- package/src/serve-gib/path-constants.mts +20 -0
- package/tsconfig.json +2 -2
- package/tsconfig.test.json +1 -1
- package/dist/assumptions.respec.d.mts +0 -2
- package/dist/assumptions.respec.d.mts.map +0 -1
- package/dist/assumptions.respec.mjs +0 -41
- package/dist/assumptions.respec.mjs.map +0 -1
- package/dist/email/email-service.respec.d.mts +0 -2
- package/dist/email/email-service.respec.d.mts.map +0 -1
- package/dist/email/email-service.respec.mjs +0 -115
- package/dist/email/email-service.respec.mjs.map +0 -1
- package/dist/serve-gib/bootstrap-helper.respec.d.mts +0 -2
- package/dist/serve-gib/bootstrap-helper.respec.d.mts.map +0 -1
- package/dist/serve-gib/bootstrap-helper.respec.mjs +0 -85
- package/dist/serve-gib/bootstrap-helper.respec.mjs.map +0 -1
- package/dist/serve-gib/handlers/api/health.respec.d.mts +0 -2
- package/dist/serve-gib/handlers/api/health.respec.d.mts.map +0 -1
- package/dist/serve-gib/handlers/api/health.respec.mjs +0 -47
- package/dist/serve-gib/handlers/api/health.respec.mjs.map +0 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts +0 -2
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.d.mts.map +0 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs +0 -98
- package/dist/serve-gib/handlers/api/keystone/keystone-get.respec.mjs.map +0 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts +0 -2
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.d.mts.map +0 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs +0 -131
- package/dist/serve-gib/handlers/api/keystone/keystone-post.respec.mjs.map +0 -1
- package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts +0 -2
- package/dist/serve-gib/identity-index/identity-index-service.respec.d.mts.map +0 -1
- package/dist/serve-gib/identity-index/identity-index-service.respec.mjs +0 -109
- package/dist/serve-gib/identity-index/identity-index-service.respec.mjs.map +0 -1
- package/dist/serve-gib/keystone-schema-helpers.respec.d.mts +0 -2
- package/dist/serve-gib/keystone-schema-helpers.respec.d.mts.map +0 -1
- package/dist/serve-gib/keystone-schema-helpers.respec.mjs +0 -68
- package/dist/serve-gib/keystone-schema-helpers.respec.mjs.map +0 -1
- package/dist/serve-gib/path-helper.respec.d.mts +0 -2
- package/dist/serve-gib/path-helper.respec.d.mts.map +0 -1
- package/dist/serve-gib/path-helper.respec.mjs +0 -83
- package/dist/serve-gib/path-helper.respec.mjs.map +0 -1
- package/dist/serve-gib/serve-gib.respec.d.mts +0 -2
- package/dist/serve-gib/serve-gib.respec.d.mts.map +0 -1
- package/dist/serve-gib/serve-gib.respec.mjs +0 -85
- package/dist/serve-gib/serve-gib.respec.mjs.map +0 -1
- package/dist/spec-helper.node.respec.d.mts +0 -13
- package/dist/spec-helper.node.respec.d.mts.map +0 -1
- package/dist/spec-helper.node.respec.mjs +0 -50
- package/dist/spec-helper.node.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
- 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
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs +0 -52
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_createAndInit.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
- 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
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs +0 -53
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_persistTransformResult.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.d.mts +0 -2
- 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
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs +0 -59
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_putGetDelete.node-indexed-filesystem-space-v1.respec.mjs.map +0 -1
- 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
- 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
- package/dist/witness/space/node-filesystem-space/node-indexed-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-indexed-filesystem-space-v1.respec.mjs +0 -55
- 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
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs +0 -67
- package/dist/witness/space/node-filesystem-space/respec/testSpace_createAndInit.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs +0 -67
- package/dist/witness/space/node-filesystem-space/respec/testSpace_persistTransformResult.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs +0 -68
- package/dist/witness/space/node-filesystem-space/respec/testSpace_putGetDelete.node-filesystem-space-v1.respec.mjs.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts +0 -2
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/node-filesystem-space/respec/testSpace_registerNewIbGib_GetLatest.node-filesystem-space-v1.respec.mjs +0 -69
- 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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"}
|
package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts
ADDED
|
@@ -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
|
package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.d.mts.map
ADDED
|
@@ -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
|
package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map
ADDED
|
@@ -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;
|
|
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 {
|
|
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 =
|
|
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,
|
|
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;
|
|
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 '
|
|
16
|
-
import { SsoCustodianService } from '
|
|
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
|
|
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,sHAAsH,CAAC;AAEzK,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
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;
|
|
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"}
|