@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
|
@@ -1,30 +1,81 @@
|
|
|
1
1
|
import * as fs from 'fs/promises';
|
|
2
|
-
import
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { extractErrorMsg, pretty } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
4
|
+
import { GLOBAL_LOG_A_LOT } from '../server-constants.mjs';
|
|
5
|
+
import { DEFAULT_IDENTITY_INDEX_SALT, DEFAULT_IDENTITY_INDEX_DIR_NAME } from './identity-index-constants.mjs';
|
|
3
6
|
import { getIdentityEmailHash, getShardedIndexPath } from './identity-index-helpers.mjs';
|
|
7
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
4
8
|
/**
|
|
5
9
|
* Service managing atomic, sharded identity index files for backwards email -> primary identity tjpAddr lookups.
|
|
6
10
|
*/
|
|
7
11
|
export class IdentityIndexService {
|
|
12
|
+
lc = `[${IdentityIndexService.name}]`;
|
|
8
13
|
baseDir;
|
|
9
14
|
salt;
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.baseDir = baseDir;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
const { baseDir, dataDir, salt } = options ?? {};
|
|
17
|
+
const finalDataDir = dataDir || process.env.DATA_DIR || 'data';
|
|
18
|
+
this.baseDir = baseDir || process.env.IDENTITY_INDEX_BASE_DIR || path.join(finalDataDir, DEFAULT_IDENTITY_INDEX_DIR_NAME);
|
|
15
19
|
this.salt = salt || process.env.IDENTITY_INDEX_SALT || DEFAULT_IDENTITY_INDEX_SALT;
|
|
16
20
|
}
|
|
21
|
+
// /**
|
|
22
|
+
// * Static helper to register an email index.
|
|
23
|
+
// * @deprecated Use `getIdentityIndexService().registerEmailIndex(...)` instead.
|
|
24
|
+
// */
|
|
25
|
+
// static async registerEmailIndex(opts: {
|
|
26
|
+
// email: string;
|
|
27
|
+
// primaryTjpAddr: IbGibAddr;
|
|
28
|
+
// dataDir?: string;
|
|
29
|
+
// baseDir?: string;
|
|
30
|
+
// salt?: string;
|
|
31
|
+
// }): Promise<RegisterEmailIndexResult> {
|
|
32
|
+
// return getIdentityIndexService().registerEmailIndex({
|
|
33
|
+
// email: opts.email,
|
|
34
|
+
// primaryTjpAddr: opts.primaryTjpAddr
|
|
35
|
+
// });
|
|
36
|
+
// }
|
|
37
|
+
// /**
|
|
38
|
+
// * Static helper to lookup an identity record by email address.
|
|
39
|
+
// * @deprecated Use `getIdentityIndexService().lookupIdentityByEmail(...)` instead.
|
|
40
|
+
// */
|
|
41
|
+
// static async lookupIdentityByEmail(opts: {
|
|
42
|
+
// email: string;
|
|
43
|
+
// dataDir?: string;
|
|
44
|
+
// baseDir?: string;
|
|
45
|
+
// salt?: string;
|
|
46
|
+
// }): Promise<{ primaryTjpAddr: IbGibAddr; tjpAddr: IbGibAddr; createdAt: number } | undefined> {
|
|
47
|
+
// return getIdentityIndexService().lookupIdentityByEmail({ email: opts.email });
|
|
48
|
+
// }
|
|
49
|
+
// /**
|
|
50
|
+
// * Static helper to unregister an email index.
|
|
51
|
+
// * @deprecated Use `getIdentityIndexService().unregisterEmailIndex(...)` instead.
|
|
52
|
+
// */
|
|
53
|
+
// static async unregisterEmailIndex(opts: {
|
|
54
|
+
// email: string;
|
|
55
|
+
// dataDir?: string;
|
|
56
|
+
// baseDir?: string;
|
|
57
|
+
// salt?: string;
|
|
58
|
+
// }): Promise<boolean> {
|
|
59
|
+
// return getIdentityIndexService().unregisterEmailIndex({ email: opts.email });
|
|
60
|
+
// }
|
|
17
61
|
/**
|
|
18
62
|
* Registers an email to a primary identity tjpAddr.
|
|
19
63
|
* Uses atomic OS file creation (`flag: 'wx'`) to guarantee single-server ACID uniqueness.
|
|
20
64
|
* Throws `duplicate_identity_409` error if email is already registered.
|
|
21
65
|
*/
|
|
22
|
-
async registerEmailIndex({ email, tjpAddr, }) {
|
|
66
|
+
async registerEmailIndex({ email, tjpAddr, primaryTjpAddr, }) {
|
|
67
|
+
const targetAddr = tjpAddr || primaryTjpAddr;
|
|
68
|
+
if (!targetAddr) {
|
|
69
|
+
throw new Error('Either tjpAddr or primaryTjpAddr must be provided. (E: 62f15851b9a8c8d718279ab84e426826)');
|
|
70
|
+
}
|
|
23
71
|
const emailHash = await getIdentityEmailHash({ email, salt: this.salt });
|
|
24
|
-
const { folderPath, filePath } = getShardedIndexPath({
|
|
72
|
+
const { folderPath, filePath } = getShardedIndexPath({
|
|
73
|
+
baseDir: this.baseDir,
|
|
74
|
+
emailHash
|
|
75
|
+
});
|
|
25
76
|
await fs.mkdir(folderPath, { recursive: true });
|
|
26
77
|
const record = {
|
|
27
|
-
tjpAddr,
|
|
78
|
+
tjpAddr: targetAddr,
|
|
28
79
|
createdAt: Date.now(),
|
|
29
80
|
};
|
|
30
81
|
try {
|
|
@@ -38,31 +89,86 @@ export class IdentityIndexService {
|
|
|
38
89
|
throw error;
|
|
39
90
|
}
|
|
40
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Retrieves the registered identity info for an email address.
|
|
94
|
+
* Returns `undefined` if email is not indexed.
|
|
95
|
+
*/
|
|
96
|
+
async lookupIdentityByEmail({ email, }) {
|
|
97
|
+
const record = await this.getEmailIndex({ email });
|
|
98
|
+
if (!record) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
primaryTjpAddr: record.tjpAddr,
|
|
103
|
+
tjpAddr: record.tjpAddr,
|
|
104
|
+
createdAt: record.createdAt,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
41
107
|
/**
|
|
42
108
|
* Retrieves the registered `IdentityIndexRecord` for an email address.
|
|
43
109
|
* Returns `undefined` if email is not indexed.
|
|
44
110
|
*/
|
|
45
111
|
async getEmailIndex({ email, }) {
|
|
46
|
-
const
|
|
47
|
-
|
|
112
|
+
const lc = `${this.lc}[${this.getEmailIndex.name}]`;
|
|
113
|
+
try {
|
|
114
|
+
if (logalot) {
|
|
115
|
+
console.log(`${lc} starting... (I: 3cd3e8e7bd88e193668a8d842d326826)`);
|
|
116
|
+
}
|
|
117
|
+
const emailHash = await getIdentityEmailHash({ email, salt: this.salt });
|
|
118
|
+
if (logalot) {
|
|
119
|
+
console.log(`${lc} emailHash: ${emailHash} (I: cae3161784e8eb00e5c6128a17aadf26)`);
|
|
120
|
+
}
|
|
121
|
+
const emailIndex = this.getEmailIndexByHash({ emailHash });
|
|
122
|
+
if (logalot) {
|
|
123
|
+
console.log(`${lc} emailIndex: ${emailIndex ? pretty(emailIndex) : 'undefined'} (I: dce1a8387affbd99c85f970853eac826)`);
|
|
124
|
+
}
|
|
125
|
+
return emailIndex;
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
if (logalot) {
|
|
133
|
+
console.log(`${lc} complete.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
48
136
|
}
|
|
49
137
|
/**
|
|
50
138
|
* Retrieves the registered `IdentityIndexRecord` directly by `emailHash`.
|
|
51
139
|
* Returns `undefined` if hash file does not exist.
|
|
52
140
|
*/
|
|
53
141
|
async getEmailIndexByHash({ emailHash, }) {
|
|
54
|
-
const
|
|
142
|
+
const lc = `${this.lc}[${this.getEmailIndexByHash.name}]`;
|
|
55
143
|
try {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
144
|
+
if (logalot) {
|
|
145
|
+
console.log(`${lc} starting... (I: 206328babd08908ad876fd69a4b37826)`);
|
|
146
|
+
}
|
|
147
|
+
const { filePath } = getShardedIndexPath({ baseDir: this.baseDir, emailHash });
|
|
148
|
+
if (logalot) {
|
|
149
|
+
console.log(`${lc} filePath: ${filePath} (I: e8f318aabc06320db8b0c3c8b34c5926)`);
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
153
|
+
const record = JSON.parse(content);
|
|
154
|
+
return record;
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (error.code === 'ENOENT') {
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
59
162
|
}
|
|
60
163
|
catch (error) {
|
|
61
|
-
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
164
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
64
165
|
throw error;
|
|
65
166
|
}
|
|
167
|
+
finally {
|
|
168
|
+
if (logalot) {
|
|
169
|
+
console.log(`${lc} complete.`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
66
172
|
}
|
|
67
173
|
/**
|
|
68
174
|
* Unindexes an email address (deletes the index JSON file).
|
|
@@ -83,4 +189,14 @@ export class IdentityIndexService {
|
|
|
83
189
|
}
|
|
84
190
|
}
|
|
85
191
|
}
|
|
192
|
+
let _identityIndexService;
|
|
193
|
+
/**
|
|
194
|
+
* Singleton factory getter for the IdentityIndexService.
|
|
195
|
+
*/
|
|
196
|
+
export function getIdentityIndexService() {
|
|
197
|
+
if (!_identityIndexService) {
|
|
198
|
+
_identityIndexService = new IdentityIndexService();
|
|
199
|
+
}
|
|
200
|
+
return _identityIndexService;
|
|
201
|
+
}
|
|
86
202
|
//# sourceMappingURL=identity-index-service.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-index-service.mjs","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"identity-index-service.mjs","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,10 @@ export interface IdentityIndexRecord {
|
|
|
12
12
|
* Configuration options for initializing IdentityIndexService.
|
|
13
13
|
*/
|
|
14
14
|
export interface IdentityIndexServiceOptions {
|
|
15
|
-
/** Base directory where index shards will be stored (e.g. `data/
|
|
16
|
-
baseDir
|
|
15
|
+
/** Base directory where index shards will be stored (e.g. `data/identity_index`). */
|
|
16
|
+
baseDir?: string;
|
|
17
|
+
/** Server root data directory (e.g. `data`). If baseDir is omitted, `baseDir` defaults to `path.join(dataDir, DEFAULT_IDENTITY_INDEX_DIR_NAME)`. */
|
|
18
|
+
dataDir?: string;
|
|
17
19
|
/** Server salt for privacy email hashing. Defaults to `DEFAULT_IDENTITY_INDEX_SALT`. */
|
|
18
20
|
salt?: string;
|
|
19
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-index-types.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,6CAA6C;IAC7C,OAAO,EAAE,SAAS,CAAC;IACnB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,
|
|
1
|
+
{"version":3,"file":"identity-index-types.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-types.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,6CAA6C;IAC7C,OAAO,EAAE,SAAS,CAAC;IACnB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oJAAoJ;IACpJ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,MAAM,EAAE,mBAAmB,CAAC;CAC/B"}
|
|
@@ -31,8 +31,12 @@ export * from './handlers/api/keystone/keystone-check-email.handler.mjs';
|
|
|
31
31
|
export * from './handlers/api/keystone/sso-config.handler.mjs';
|
|
32
32
|
export * from './handlers/api/keystone/sso-link.handler.mjs';
|
|
33
33
|
export * from './handlers/api/keystone/sso-login.handler.mjs';
|
|
34
|
+
export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
35
|
+
export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
34
36
|
export * from './handlers/api/email/email-inbound.handler.mjs';
|
|
35
37
|
export * from './handlers/api/email/email-outbound.handler.mjs';
|
|
38
|
+
export * from './handlers/api/email/email-verification-code.handler.mjs';
|
|
39
|
+
export * from './handlers/api/email/email-verify-code-onetime.handler.mjs';
|
|
36
40
|
export * from './handlers/api/debug/ws-echo.handler.mjs';
|
|
37
41
|
export * from './handlers/ws/ws-types.mjs';
|
|
38
42
|
export * from './handlers/ws/ws-helper.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,0DAA0D,CAAC;AACzE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,0DAA0D,CAAC;AACzE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gEAAgE,CAAC;AAC/E,cAAc,0EAA0E,CAAC;AACzF,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0DAA0D,CAAC;AACzE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAoB9C,MAAM,WAAW,uBAAuB;IACpC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,GAAE,uBAA4B,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CA0B3G"}
|
package/dist/serve-gib/index.mjs
CHANGED
|
@@ -32,8 +32,12 @@ export * from './handlers/api/keystone/keystone-check-email.handler.mjs';
|
|
|
32
32
|
export * from './handlers/api/keystone/sso-config.handler.mjs';
|
|
33
33
|
export * from './handlers/api/keystone/sso-link.handler.mjs';
|
|
34
34
|
export * from './handlers/api/keystone/sso-login.handler.mjs';
|
|
35
|
+
export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
36
|
+
export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
35
37
|
export * from './handlers/api/email/email-inbound.handler.mjs';
|
|
36
38
|
export * from './handlers/api/email/email-outbound.handler.mjs';
|
|
39
|
+
export * from './handlers/api/email/email-verification-code.handler.mjs';
|
|
40
|
+
export * from './handlers/api/email/email-verify-code-onetime.handler.mjs';
|
|
37
41
|
export * from './handlers/api/debug/ws-echo.handler.mjs';
|
|
38
42
|
export * from './handlers/ws/ws-types.mjs';
|
|
39
43
|
export * from './handlers/ws/ws-helper.mjs';
|
|
@@ -50,8 +54,12 @@ import { KeystoneCheckEmailHandler } from './handlers/api/keystone/keystone-chec
|
|
|
50
54
|
import { SsoLinkHandler } from './handlers/api/keystone/sso-link.handler.mjs';
|
|
51
55
|
import { SsoLoginHandler } from './handlers/api/keystone/sso-login.handler.mjs';
|
|
52
56
|
import { SsoConfigHandler } from './handlers/api/keystone/sso-config.handler.mjs';
|
|
57
|
+
import { KeystoneCustodianGenesisHandler } from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
58
|
+
import { KeystoneCustodianRegisterDelegateHandler } from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
53
59
|
import { EmailInboundHandler } from './handlers/api/email/email-inbound.handler.mjs';
|
|
54
60
|
import { EmailOutboundHandler } from './handlers/api/email/email-outbound.handler.mjs';
|
|
61
|
+
import { EmailVerificationCodeHandler } from './handlers/api/email/email-verification-code.handler.mjs';
|
|
62
|
+
import { EmailVerifyCodeOnetimeHandler } from './handlers/api/email/email-verify-code-onetime.handler.mjs';
|
|
55
63
|
import { StaticFileHandler } from './handlers/static-handler.mjs';
|
|
56
64
|
/**
|
|
57
65
|
* Returns the standard pipeline array of ibgib HTTP request handlers for serve-gib.
|
|
@@ -69,8 +77,12 @@ export function getStandardServeGibHandlers(opts = {}) {
|
|
|
69
77
|
new SsoLinkHandler(),
|
|
70
78
|
new SsoLoginHandler(),
|
|
71
79
|
new SsoConfigHandler(),
|
|
80
|
+
new KeystoneCustodianGenesisHandler(),
|
|
81
|
+
new KeystoneCustodianRegisterDelegateHandler(),
|
|
72
82
|
new EmailInboundHandler(),
|
|
73
83
|
new EmailOutboundHandler(),
|
|
84
|
+
new EmailVerificationCodeHandler(),
|
|
85
|
+
new EmailVerifyCodeOnetimeHandler(),
|
|
74
86
|
];
|
|
75
87
|
if (opts.clientDir) {
|
|
76
88
|
handlers.push(new StaticFileHandler(opts.clientDir));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAE5D,WAAW;AACX,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oDAAoD,CAAC;AACnE,cAAc,sDAAsD,CAAC;AACrE,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,kDAAkD,CAAC;AACjE,cAAc,qDAAqD,CAAC;AACpE,cAAc,0DAA0D,CAAC;AACzE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,iDAAiD,CAAC;AAChE,cAAc,0CAA0C,CAAC;AACzD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wCAAwC,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAOlE;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAI,GAA4B,EAAE;IAC1E,MAAM,QAAQ,GAAgC;QAC1C,IAAI,aAAa,EAAE;QACnB,IAAI,YAAY,EAAE;QAClB,IAAI,sBAAsB,EAAE;QAC5B,IAAI,qBAAqB,EAAE;QAC3B,IAAI,mBAAmB,EAAE;QACzB,IAAI,kBAAkB,EAAE;QACxB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,yBAAyB,EAAE;QAC/B,IAAI,cAAc,EAAE;QACpB,IAAI,eAAe,EAAE;QACrB,IAAI,gBAAgB,EAAE;QACtB,IAAI,mBAAmB,EAAE;QACzB,IAAI,oBAAoB,EAAE;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"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"}
|
|
@@ -97,6 +97,23 @@ export declare const API_PATH_REGEXES: {
|
|
|
97
97
|
* /api/email/send
|
|
98
98
|
*/
|
|
99
99
|
EMAIL_SEND: RegExp;
|
|
100
|
+
/**
|
|
101
|
+
* /api/email/verification-code
|
|
102
|
+
*/
|
|
103
|
+
EMAIL_VERIFICATION_CODE: RegExp;
|
|
104
|
+
/**
|
|
105
|
+
* /api/email/verify or /api/email/verify-code
|
|
106
|
+
*/
|
|
107
|
+
EMAIL_VERIFY: RegExp;
|
|
108
|
+
EMAIL_VERIFY_CODE: RegExp;
|
|
109
|
+
/**
|
|
110
|
+
* /api/identity/custodian/genesis
|
|
111
|
+
*/
|
|
112
|
+
KEYSTONE_CUSTODIAN_GENESIS: RegExp;
|
|
113
|
+
/**
|
|
114
|
+
* /api/identity/custodian/register-delegate
|
|
115
|
+
*/
|
|
116
|
+
KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: RegExp;
|
|
100
117
|
};
|
|
101
118
|
export declare const VALID_STATIC_PATH_REGEX: RegExp;
|
|
102
119
|
//# sourceMappingURL=path-constants.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAK9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;IACH,MAAM;IAEN;;OAEG;IACH,WAAW;IAEX;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,QAAQ;IAER;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,eAAe;IAEf;;;;;;;;OAQG;IACH,gBAAgB;IAEhB;;OAEG;IACH,eAAe;IAEf;;OAEG;IACH,oBAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,aAAa;IACb;;OAEG;IACH,OAAO;IACP;;OAEG;IACH,iBAAiB;IACjB;;OAEG;IACH,kBAAkB;IAClB;;OAEG;IACH,mBAAmB;IACnB;;OAEG;IACH,aAAa;IACb;;OAEG;IACH,UAAU;
|
|
1
|
+
{"version":3,"file":"path-constants.d.mts","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAK9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;IACzB;;OAEG;IACH,MAAM;IAEN;;OAEG;IACH,WAAW;IAEX;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,QAAQ;IAER;;OAEG;IACH,aAAa;IAEb;;OAEG;IACH,UAAU;IAEV;;OAEG;IACH,eAAe;IAEf;;;;;;;;OAQG;IACH,gBAAgB;IAEhB;;OAEG;IACH,eAAe;IAEf;;OAEG;IACH,oBAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,aAAa;IACb;;OAEG;IACH,OAAO;IACP;;OAEG;IACH,iBAAiB;IACjB;;OAEG;IACH,kBAAkB;IAClB;;OAEG;IACH,mBAAmB;IACnB;;OAEG;IACH,aAAa;IACb;;OAEG;IACH,UAAU;IACV;;OAEG;IACH,uBAAuB;IAEvB;;OAEG;IACH,YAAY;IACZ,iBAAiB;IAEjB;;OAEG;IACH,0BAA0B;IAE1B;;OAEG;IACH,oCAAoC;CACvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAA4B,CAAC"}
|
|
@@ -102,6 +102,23 @@ export const API_PATH_REGEXES = {
|
|
|
102
102
|
* /api/email/send
|
|
103
103
|
*/
|
|
104
104
|
EMAIL_SEND: /^\/api\/email\/send\/?$/,
|
|
105
|
+
/**
|
|
106
|
+
* /api/email/verification-code
|
|
107
|
+
*/
|
|
108
|
+
EMAIL_VERIFICATION_CODE: /^\/api\/email\/verification-code\/?$/,
|
|
109
|
+
/**
|
|
110
|
+
* /api/email/verify or /api/email/verify-code
|
|
111
|
+
*/
|
|
112
|
+
EMAIL_VERIFY: /^\/api\/email\/verify\/?$/,
|
|
113
|
+
EMAIL_VERIFY_CODE: /^\/api\/email\/verify-code\/?$/,
|
|
114
|
+
/**
|
|
115
|
+
* /api/identity/custodian/genesis
|
|
116
|
+
*/
|
|
117
|
+
KEYSTONE_CUSTODIAN_GENESIS: /^\/api\/identity\/custodian\/genesis\/?$/i,
|
|
118
|
+
/**
|
|
119
|
+
* /api/identity/custodian/register-delegate
|
|
120
|
+
*/
|
|
121
|
+
KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: /^\/api\/identity\/custodian\/register-delegate\/?$/i,
|
|
105
122
|
};
|
|
106
123
|
export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;
|
|
107
124
|
//# sourceMappingURL=path-constants.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAO,yBAAyB;IACtC,MAAM,EAAO,uBAAuB;IACpC,IAAI,EAAS,gBAAgB;IAC7B,UAAU,EAAG,wCAAwC;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,oBAAoB;IAE5B;;OAEG;IACH,WAAW,EAAE,oFAAoF;IAEjG;;OAEG;IACH,UAAU,EAAE,6EAA6E;IAEzF;;OAEG;IACH,QAAQ,EAAE,sBAAsB;IAEhC;;OAEG;IACH,aAAa,EAAE,mDAAmD;IAElE;;OAEG;IACH,UAAU,EAAE,mBAAmB;IAE/B;;OAEG;IACH,eAAe,EAAE,2DAA2D;IAE5E;;;;;;;;OAQG;IACH,gBAAgB,EAAE,+BAA+B;IAEjD;;OAEG;IACH,eAAe,EAAE,8BAA8B;IAE/C;;OAEG;IACH,oBAAoB,EAAE,mCAAmC;IAEzD;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,mDAAmD;IAC5D;;OAEG;IACH,iBAAiB,EAAE,iCAAiC;IACpD;;OAEG;IACH,kBAAkB,EAAE,kCAAkC;IACtD;;OAEG;IACH,mBAAmB,EAAE,mCAAmC;IACxD;;OAEG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,UAAU,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"path-constants.mjs","sourceRoot":"","sources":["../../src/serve-gib/path-constants.mts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,MAAM,EAAO,yBAAyB;IACtC,MAAM,EAAO,uBAAuB;IACpC,IAAI,EAAS,gBAAgB;IAC7B,UAAU,EAAG,wCAAwC;CACxD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B;;OAEG;IACH,MAAM,EAAE,oBAAoB;IAE5B;;OAEG;IACH,WAAW,EAAE,oFAAoF;IAEjG;;OAEG;IACH,UAAU,EAAE,6EAA6E;IAEzF;;OAEG;IACH,QAAQ,EAAE,sBAAsB;IAEhC;;OAEG;IACH,aAAa,EAAE,mDAAmD;IAElE;;OAEG;IACH,UAAU,EAAE,mBAAmB;IAE/B;;OAEG;IACH,eAAe,EAAE,2DAA2D;IAE5E;;;;;;;;OAQG;IACH,gBAAgB,EAAE,+BAA+B;IAEjD;;OAEG;IACH,eAAe,EAAE,8BAA8B;IAE/C;;OAEG;IACH,oBAAoB,EAAE,mCAAmC;IAEzD;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,mDAAmD;IAC5D;;OAEG;IACH,iBAAiB,EAAE,iCAAiC;IACpD;;OAEG;IACH,kBAAkB,EAAE,kCAAkC;IACtD;;OAEG;IACH,mBAAmB,EAAE,mCAAmC;IACxD;;OAEG;IACH,aAAa,EAAE,4BAA4B;IAC3C;;OAEG;IACH,UAAU,EAAE,yBAAyB;IACrC;;OAEG;IACH,uBAAuB,EAAE,sCAAsC;IAE/D;;OAEG;IACH,YAAY,EAAE,2BAA2B;IACzC,iBAAiB,EAAE,gCAAgC;IAEnD;;OAEG;IACH,0BAA0B,EAAE,2CAA2C;IAEvE;;OAEG;IACH,oCAAoC,EAAE,qDAAqD;CAC9F,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# E2E Test Plan: Full Custodian Passwordless Onboarding & Single-Turn Authorization Ceremony
|
|
2
|
+
|
|
3
|
+
Tests custodian (passwordless) account creation, add-device.
|
|
4
|
+
|
|
5
|
+
* **Create Account**: passwordless, Google or custom email
|
|
6
|
+
* **Sign in**: passwordless, Google or custom email
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Overview & Execution Model
|
|
11
|
+
|
|
12
|
+
| Property | Specification |
|
|
13
|
+
| :--- | :--- |
|
|
14
|
+
| **Primary Domain Target** | `https://local.ibgib.space` (Google OAuth callback domain) |
|
|
15
|
+
| **Server Mode** | `EMAIL_MODE=mock` |
|
|
16
|
+
| **Target Audience** | Human QA Testers / Agent Browser Testers |
|
|
17
|
+
|
|
18
|
+
### Fail-Fast Sequential Lifecycle
|
|
19
|
+
- Executed linearly from **Phase 0 through Phase 3**.
|
|
20
|
+
- If any step in any phase fails, execution halts immediately, and the E2E test run is marked as **FAILED**.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Test Variables
|
|
25
|
+
|
|
26
|
+
* `<E2E_TEST_GMAIL_ADDRESS_ALICE>` - located in `.env`
|
|
27
|
+
* `<test_url>` - `https://local.ibgib.space`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Sequential Test Phases
|
|
32
|
+
|
|
33
|
+
### Phase 0: Prerequisites & Environment Setup
|
|
34
|
+
Verify that local Docker services are running, server listens on port 3000, target domain `<test_url>` resolves, server data directory is cleaned, and local browser storage (IndexedDB, LocalStorage, SessionStorage) is cleared.
|
|
35
|
+
|
|
36
|
+
> [!WARNING]
|
|
37
|
+
> Cleaning the server wipes `<dataDir>/` (`identity_index/`, email hashes, and all registered domain tenancy folders). Do not run server cleaning if active personal testing or long-running server state needs to be preserved!
|
|
38
|
+
|
|
39
|
+
#### Steps
|
|
40
|
+
1. **Clean and reset local server state**:
|
|
41
|
+
- Run `npm run clean:space-gib:server` in monorepo root (deletes `.data/` directory and resets email index).
|
|
42
|
+
- *(Optional UX Tip)*: If using Docker Desktop on Windows, clear the container log terminal view before restarting to eliminate log noise when locating 6-digit verification code log entries.
|
|
43
|
+
- Run `npm run restart:space-gib` to restart the server with a clean data state, or `npm run docker:space-gib` / `npm run docker:space-gib:d` if not started.
|
|
44
|
+
2. **Confirm server startup log outputs**: (e.g. `[space-gib server] dataDir: /data/ibgib-space` and `[space-gib server] listening on http://0.0.0.0:3000`).
|
|
45
|
+
3. **Open test browser(s)**: Navigate to `<test_url>`.
|
|
46
|
+
4. **Clear browser data for `<test_url>`** (all ibgib data is stored in IndexedDB): Ensure you are you at `<test_url>` -> Open Developer Tools (F12) -> Application -> IndexedDB -> `space_gib_db` -> Delete database, then refresh the browser
|
|
47
|
+
5. **Test Credentials**: Refer to (vcs ignored) `.env` for `<E2E_TEST_GMAIL_ADDRESS_ALICE>` and password.
|
|
48
|
+
|
|
49
|
+
### Phase 1: First-Time Passwordless Account Creation & Custodian Genesis
|
|
50
|
+
Create a new custodian identity on `<test_url>` using the **Quick / Passwordless** workflow (6-digit OTP email code or Google SSO), verify single-turn `custodianReqs` generation, and confirm local delegate keystone registration.
|
|
51
|
+
|
|
52
|
+
#### Steps
|
|
53
|
+
1. Open browser to `<test_url>`.
|
|
54
|
+
2. In `<ibgib-identity-header>`, click **Create Account**.
|
|
55
|
+
3. Observe the default **Quick (Passwordless)** tab is selected by default.
|
|
56
|
+
4. Enter email `<E2E_TEST_GMAIL_ADDRESS_ALICE>` and click **Send Code** (or click **Continue with Google**).
|
|
57
|
+
5. Open server console / terminal logs to locate the dispatched 6-digit OTP verification code.
|
|
58
|
+
6. Enter the 6-digit OTP code into the PIN input prompt in the same tab and click **Verify Code**.
|
|
59
|
+
7. Verify API execution:
|
|
60
|
+
- Client calls `POST /api/identity/custodian/genesis`.
|
|
61
|
+
- Server returns `isNewIdentity: true`, `primaryTjpAddr`, `primaryKeystone`, and single-turn `custodianReqs`.
|
|
62
|
+
- Client derives local delegate secret, constructs $K_{\text{delegate}}$, and calls `POST /api/identity/custodian/register-delegate`.
|
|
63
|
+
8. Verify outcomes:
|
|
64
|
+
- Identity header displays avatar & username (derived from email).
|
|
65
|
+
- Local browser user space contains $K_{\text{primary}}$ and $K_{\text{delegate}}$.
|
|
66
|
+
- `<dataDir>/identity_index/email/hashes/` contains the registered email index.
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Phase 2: Second-Device Passwordless Sign-In & Device Pairing
|
|
70
|
+
Open a fresh Incognito browser window to `<test_url>`, execute passwordless sign-in for `<E2E_TEST_GMAIL_ADDRESS_ALICE>`, and verify that the server provisions a fresh `custodianReqs` payload and registers a second device delegate ($K_{\text{delegate2}}$).
|
|
71
|
+
|
|
72
|
+
#### Steps
|
|
73
|
+
1. Open a second browser window (or Incognito window) at `<test_url>`.
|
|
74
|
+
2. Click **Sign In** in `<ibgib-identity-header>`.
|
|
75
|
+
3. Enter the same email address `<E2E_TEST_GMAIL_ADDRESS_ALICE>` and click **Send Code** (or click **Continue with Google**).
|
|
76
|
+
4. Copy the 6-digit OTP code from the server console log and submit it.
|
|
77
|
+
5. Verify API execution:
|
|
78
|
+
- Server returns `isNewIdentity: false`, existing `primaryTjpAddr`, and fresh single-turn `custodianReqs`.
|
|
79
|
+
- Second browser constructs its local $K_{\text{delegate2}}$ and registers via `POST /api/identity/custodian/register-delegate`.
|
|
80
|
+
6. Verify outcomes:
|
|
81
|
+
- Second device successfully pairs and displays user identity header.
|
|
82
|
+
- Server evolves $K_{\text{primary}} \to K_{\text{primary}, n=2}$ with both device delegates registered in `rel8ns.sync_delegate`.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### Phase 3: Single-Turn Nonce Replay Prevention
|
|
86
|
+
Attempt to re-submit a previously consumed `custodianReqs` payload to `POST /api/identity/custodian/register-delegate` and verify that the server kernel atomically rejects the request.
|
|
87
|
+
|
|
88
|
+
#### Steps
|
|
89
|
+
1. Copy or intercept a `custodianReqs` payload previously consumed in Phase 1 or Phase 2.
|
|
90
|
+
2. Re-submit the same `delegateKeystone` (or identical `custodianReqs` payload) to `POST /api/identity/custodian/register-delegate`.
|
|
91
|
+
3. Verify rejection outcome:
|
|
92
|
+
- Server rejects the request with **HTTP 409 Conflict**:
|
|
93
|
+
`"Custodian requirements payload has already been used. Nonce single-turn reservation violation."`
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# E2E Test Plan: Identity, SSO & 6-Digit Email Code Lifecycle
|
|
2
|
+
|
|
3
|
+
This document is the official End-to-End (E2E) browser test plan for the complete identity creation, 6-digit email OTP verification, Google SSO linking, new-device sign-in, and delegate revocation user lifecycle.
|
|
4
|
+
|
|
5
|
+
* **Create Account**: Create local/sovereign identity
|
|
6
|
+
* **Verify Email**: 6-digit code
|
|
7
|
+
* **Link SSO**: Google is only OAuth2 provider atow
|
|
8
|
+
* **Sign in**: add device
|
|
9
|
+
* **Revoke delegate**: remove device
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Overview & Execution Model
|
|
14
|
+
|
|
15
|
+
| Property | Specification |
|
|
16
|
+
| :--- | :--- |
|
|
17
|
+
| **Primary Domain Target** | `https://local.ibgib.space` (Google OAuth callback domain) |
|
|
18
|
+
| **Server Mode** | `EMAIL_MODE=mock` |
|
|
19
|
+
| **Target Audience** | Human QA Testers / Agent Browser Testers |
|
|
20
|
+
|
|
21
|
+
### Fail-Fast Sequential Lifecycle
|
|
22
|
+
- Executed linearly from **Phase 0 through Phase 5**.
|
|
23
|
+
- If any step in any phase fails, execution halts immediately, and the E2E test run is marked as **FAILED**.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Test Variables
|
|
28
|
+
|
|
29
|
+
* `<E2E_TEST_GMAIL_ADDRESS_ALICE>` - located in `.env`
|
|
30
|
+
* `<test_url>` - `https://local.ibgib.space`
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Sequential Test Phases
|
|
35
|
+
|
|
36
|
+
### Phase 0: Prerequisites & Environment Setup
|
|
37
|
+
Verify that local Docker services are running, server listens on port 3000, target domain `https://local.ibgib.space` resolves, server data directory is cleaned, and local browser storage (IndexedDB, LocalStorage, SessionStorage) is cleared.
|
|
38
|
+
|
|
39
|
+
> [!WARNING]
|
|
40
|
+
> Cleaning the server wipes `<dataDir>/` (`identity_index/`, email hashes, and all registered domain tenancy folders). Do not run server cleaning if active personal testing or long-running server state needs to be preserved!
|
|
41
|
+
|
|
42
|
+
#### Steps
|
|
43
|
+
1. **Clean and reset local server state**:
|
|
44
|
+
- Run `npm run clean:space-gib:server` in monorepo root (deletes `.data/` directory and resets email index).
|
|
45
|
+
- *(Optional UX Tip)*: If using Docker Desktop on Windows, clear the container log terminal view before restarting to eliminate log noise when locating 6-digit verification code log entries.
|
|
46
|
+
- Run `npm run restart:space-gib` to restart the server with a clean data state, or `npm run docker:space-gib` / `npm run docker:space-gib:d` if not started.
|
|
47
|
+
2. **Confirm server startup log outputs**: (e.g. `[space-gib server] dataDir: /data/ibgib-space` and `[space-gib server] listening on http://0.0.0.0:3000`).
|
|
48
|
+
3. **Open test browser(s)**: Navigate to `<test_url>`.
|
|
49
|
+
4. **Clear browser data for `<test_url>`** (all ibgib data is stored in IndexedDB): Ensure you are you at `<test_url>` -> Open Developer Tools (F12) -> Application -> IndexedDB -> `space_gib_db` -> Delete database, then refresh the browser
|
|
50
|
+
5. **Test Credentials**: Refer to (vcs ignored) `.env` for `<E2E_TEST_GMAIL_ADDRESS_ALICE>` and password.
|
|
51
|
+
|
|
52
|
+
### Phase 1: Account Creation & Email Verification Code Dispatch
|
|
53
|
+
Create a new identity `alice` with email `<E2E_TEST_GMAIL_ADDRESS_ALICE>` (from `.env`) on `https://local.ibgib.space` and verify that the genesis keystone is quarantined in the `email/pending/` staging directory with `code.json` and Ahead-of-Time (AOT) metadata JSON files.
|
|
54
|
+
|
|
55
|
+
#### Steps
|
|
56
|
+
1. Open browser to `https://local.ibgib.space`.
|
|
57
|
+
2. In `<ibgib-identity-header>`, click **Create Account**.
|
|
58
|
+
3. Input registration credentials:
|
|
59
|
+
- **Username**: `alice`
|
|
60
|
+
- **Passphrase**: `asdf`
|
|
61
|
+
- **Email**: `<E2E_TEST_GMAIL_ADDRESS_ALICE>` (from `.env`)
|
|
62
|
+
4. Click **Generate Identity**.
|
|
63
|
+
5. Verify status message in UI: `✉️ Verification code sent to your email. Enter 6-digit code below:`
|
|
64
|
+
6. Verify PIN input field (`#section-code-verification`) appears in the UI.
|
|
65
|
+
7. Verify server terminal log contains 6-digit verification code:
|
|
66
|
+
`[EmailSenderMock] ✉️ Verification Code for <E2E_TEST_GMAIL_ADDRESS_ALICE>: <6-DIGIT-CODE>`
|
|
67
|
+
8. Verify file system staging quarantine:
|
|
68
|
+
- Check `<dataDir>/identity_index/email/pending/<expiryTicks>_<tjpHash>/` exists.
|
|
69
|
+
- Confirm folder contains `keystone.json`, `code.json`, and `emails/<emailHash>.json` with `{ "email": "<E2E_TEST_GMAIL_ADDRESS_ALICE>", "verified": false }`.
|
|
70
|
+
- Confirm `<dataDir>/identity_index/email/hashes/` does NOT yet contain `<E2E_TEST_GMAIL_ADDRESS_ALICE>`.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### Phase 2: 6-Digit Verification Code Entry, Account Activation & Automatic Delegate Sync
|
|
74
|
+
Copy the 6-digit verification code from the server log, enter it into the UI PIN input prompt in the same tab, verify account activation, confirm promotion of the keystone to official server space, and verify automatic delegate keystone sync.
|
|
75
|
+
|
|
76
|
+
#### Steps
|
|
77
|
+
1. Copy the 6-digit verification code from the server log (e.g. `482901`).
|
|
78
|
+
2. In the same browser tab, enter the code into the PIN input field and click **Verify Code**.
|
|
79
|
+
3. Verify status message in UI: `Identity fully created & activated!`
|
|
80
|
+
4. Verify file system promotion:
|
|
81
|
+
- Check `<dataDir>/identity_index/email/pending/` staging folder is automatically removed.
|
|
82
|
+
- Check `<dataDir>/identity_index/email/hashes/` contains `<emailHash>.json` mapping `<E2E_TEST_GMAIL_ADDRESS_ALICE>` to `primaryTjpAddr`.
|
|
83
|
+
- Confirm domain identity keystone is registered in official server space under `<dataDir>/domains/<domainGib>/`.
|
|
84
|
+
- Confirm sync delegate keystone is successfully registered on the evolved parent keystone on the server."
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### Phase 3: Google SSO Linking in Identity Manager
|
|
88
|
+
Open Identity Manager on `https://local.ibgib.space`, trigger Google OAuth2 linking, and verify that the primary keystone evolves to attach `challengePools["custodian-manage-google"]`.
|
|
89
|
+
|
|
90
|
+
#### Steps
|
|
91
|
+
1. Return to the main app tab on `https://local.ibgib.space`.
|
|
92
|
+
2. Click `<ibgib-identity-header>` -> Select **Identity Manager** (`<ibgib-keystone-details>`).
|
|
93
|
+
3. Click **"Link Google SSO"**.
|
|
94
|
+
4. Complete Google OAuth2 popup authentication.
|
|
95
|
+
5. Verify primary keystone evolution:
|
|
96
|
+
- Keystone evolves ($A_0 \to A_1$) adding `challengePools["custodian-manage-google"]`.
|
|
97
|
+
- Identity Manager updates to display `Google SSO Linked ✅`.
|
|
98
|
+
6. Verify server log contains: `[SsoLinkHandler] Successfully linked google SSO for primary identity`.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Phase 4: New-Device Google SSO Sign-In (Incognito Mode)
|
|
102
|
+
Open a clean Incognito browser window to `https://local.ibgib.space`, complete Google SSO sign-in, verify that `IdentityIndexService` resolves the primary identity, verifies the `custodian-manage-google` pool, and pairs the new device.
|
|
103
|
+
|
|
104
|
+
#### Steps
|
|
105
|
+
1. Open a fresh **Incognito Window** (ctrl+shift+N) to `https://local.ibgib.space`.
|
|
106
|
+
2. In `<ibgib-identity-header>`, click **Sign In with Google**.
|
|
107
|
+
3. Complete Google OAuth2 popup authentication.
|
|
108
|
+
4. Verify server log processing:
|
|
109
|
+
- `[IdentityIndexService]` resolves `<E2E_TEST_GMAIL_ADDRESS_ALICE>` -> `primaryTjpAddr`.
|
|
110
|
+
- Server loads domain graph, verifies `custodian-manage-google` challenge pool, and issues delegate challenge.
|
|
111
|
+
5. Verify client UI result:
|
|
112
|
+
- Browser receives delegate response and pairs device seamlessly.
|
|
113
|
+
- Active identity header updates to `alice` with active status badge `🟢`.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### Phase 5: Delegate Device Tagging & Revocation
|
|
117
|
+
Return to the primary device window, open Identity Manager, verify the remote paired device displays its device tag icon, click **`[Revoke]`**, enter the master passphrase, and verify parent keystone evolution $A_n \to A_{n+1}$.
|
|
118
|
+
|
|
119
|
+
#### Steps
|
|
120
|
+
1. Switch back to the primary browser window on `https://local.ibgib.space`.
|
|
121
|
+
2. Open Identity Manager (`<ibgib-keystone-details>`).
|
|
122
|
+
3. Inspect the **Registered Delegates** table:
|
|
123
|
+
- Confirm remote paired device from Phase 4 is listed.
|
|
124
|
+
- Confirm device tag icon and name are displayed (e.g. `💻 work-laptop`).
|
|
125
|
+
- Confirm red **`[Revoke]`** button is rendered next to the delegate entry.
|
|
126
|
+
4. Click **`[Revoke]`** next to the remote delegate device.
|
|
127
|
+
5. Enter master passphrase `MySecretPassword123!` when prompted.
|
|
128
|
+
6. Verify primary keystone evolution ($A_1 \to A_2$):
|
|
129
|
+
- Primary keystone evolves removing the revoked delegate from `data.delegates`.
|
|
130
|
+
- Keystone evolution is posted to server via `putEvolveKeystone()`.
|
|
131
|
+
- Table re-renders with the revoked delegate removed.
|
|
132
|
+
7. Switch back to the Incognito window (Phase 4 device) $\to$ trigger sync or refresh $\to$ confirm device is unlinked/deauthorized.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/node-gib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"description": "Node and server-specific ibGib code, i.e., things that don't run in the browser.",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"author": "William Raiford",
|
|
25
25
|
"license": "ISC",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@ibgib/helper-gib": "
|
|
28
|
-
"@ibgib/ts-gib": "
|
|
29
|
-
"@ibgib/core-gib": "
|
|
30
|
-
"@ibgib/encrypt-gib": "
|
|
27
|
+
"@ibgib/helper-gib": "*",
|
|
28
|
+
"@ibgib/ts-gib": "*",
|
|
29
|
+
"@ibgib/core-gib": "*",
|
|
30
|
+
"@ibgib/encrypt-gib": "*"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^20.2.1"
|