@ibgib/node-gib 0.0.19 → 0.0.20
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/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.d.mts +39 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.d.mts.map +1 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs +197 -0
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs.map +1 -0
- 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 +1 -0
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.d.mts +5 -1
- package/dist/serve-gib/identity-index/identity-index-service.d.mts.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.mjs +10 -1
- package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
- package/dist/serve-gib/index.d.mts +1 -0
- package/dist/serve-gib/index.d.mts.map +1 -1
- package/dist/serve-gib/index.mjs +3 -0
- package/dist/serve-gib/index.mjs.map +1 -1
- package/dist/serve-gib/path-constants.d.mts +4 -0
- package/dist/serve-gib/path-constants.d.mts.map +1 -1
- package/dist/serve-gib/path-constants.mjs +4 -0
- package/dist/serve-gib/path-constants.mjs.map +1 -1
- package/e2e/identity-custodian-lifecycle.e2e.md +37 -0
- package/package.json +2 -2
- package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts +245 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.respec.mts +167 -0
- package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.respec.mts +2 -2
- package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +1 -0
- package/src/serve-gib/identity-index/identity-index-service.mts +11 -1
- package/src/serve-gib/index.mts +3 -0
- package/src/serve-gib/path-constants.mts +5 -0
package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.d.mts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
|
|
3
|
+
*
|
|
4
|
+
* POST /api/identity/custodian/add-master-password
|
|
5
|
+
*
|
|
6
|
+
* Single-turn sovereignty elevation endpoint for purely custodial identities.
|
|
7
|
+
* Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
|
|
8
|
+
* the provided `newManagePool` config matches the existing custodian pool config,
|
|
9
|
+
* evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
|
|
10
|
+
* installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
|
|
11
|
+
*/
|
|
12
|
+
import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
|
|
13
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
14
|
+
import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
|
|
15
|
+
import { SsoProviderId } from '../../../../identity/sso/sso-types.mjs';
|
|
16
|
+
export interface CustodianAddMasterPasswordRequestBody {
|
|
17
|
+
primaryTjpAddr: string;
|
|
18
|
+
newManagePool: KeystoneChallengePool;
|
|
19
|
+
providerId?: SsoProviderId;
|
|
20
|
+
code?: string;
|
|
21
|
+
redirectUri?: string;
|
|
22
|
+
email?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CustodianAddMasterPasswordResponseBody {
|
|
25
|
+
success: boolean;
|
|
26
|
+
primaryTjpAddr: string;
|
|
27
|
+
primaryKeystone: any;
|
|
28
|
+
message?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* POST /api/identity/custodian/add-master-password
|
|
32
|
+
*/
|
|
33
|
+
export declare class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase<undefined, undefined> {
|
|
34
|
+
protected lc: string;
|
|
35
|
+
protected method: ServeGibHttpMethod;
|
|
36
|
+
protected regex: RegExp;
|
|
37
|
+
protected handleRouteImpl(reqCtx: RequestContext<undefined, undefined>): Promise<ResponseResult | undefined>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=keystone-custodian-add-master-password.handler.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-custodian-add-master-password.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAOzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAcvE,MAAM,WAAW,qCAAqC;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sCAAsC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,yCAA0C,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IACpG,UAAmB,EAAE,EAAE,MAAM,CAAyD;IACtF,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAA2D;IAEnF,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA4KrC;CACJ"}
|
package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
|
|
3
|
+
*
|
|
4
|
+
* POST /api/identity/custodian/add-master-password
|
|
5
|
+
*
|
|
6
|
+
* Single-turn sovereignty elevation endpoint for purely custodial identities.
|
|
7
|
+
* Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
|
|
8
|
+
* the provided `newManagePool` config matches the existing custodian pool config,
|
|
9
|
+
* evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
|
|
10
|
+
* installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
|
|
11
|
+
*/
|
|
12
|
+
import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
13
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
14
|
+
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
15
|
+
import { KEYSTONE_VERB_MANAGE, POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
|
|
16
|
+
import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
|
|
17
|
+
import { validateEmail } from '@ibgib/core-gib/dist/keystone/keystone-helpers.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 { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
|
|
23
|
+
import { normalizeEmail } from '../../../identity-index/identity-index-helpers.mjs';
|
|
24
|
+
import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
|
|
25
|
+
import { SsoCustodianService } from '../../../../identity/sso/sso-custodian-service.mjs';
|
|
26
|
+
import { getPendingStagingDir, getPendingTjpHash, verifyPendingCode } from '../../../../email/verify/email-verify-helpers.mjs';
|
|
27
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
28
|
+
let custodian;
|
|
29
|
+
function getCustodian() {
|
|
30
|
+
if (!custodian) {
|
|
31
|
+
const config = loadSsoServerConfig();
|
|
32
|
+
custodian = new SsoCustodianService(config);
|
|
33
|
+
}
|
|
34
|
+
return custodian;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* POST /api/identity/custodian/add-master-password
|
|
38
|
+
*/
|
|
39
|
+
export class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase {
|
|
40
|
+
lc = `[${KeystoneCustodianAddMasterPasswordHandler.name}]`;
|
|
41
|
+
method = 'POST';
|
|
42
|
+
regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD;
|
|
43
|
+
async handleRouteImpl(reqCtx) {
|
|
44
|
+
const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
|
|
45
|
+
try {
|
|
46
|
+
if (logalot) {
|
|
47
|
+
console.log(`${lc} starting... (I: 8a1b2c3d4e5f67890a1b2c3d4e5f6790)`);
|
|
48
|
+
}
|
|
49
|
+
if (reqCtx.method !== 'POST') {
|
|
50
|
+
return this.error(405, 'Method Not Allowed');
|
|
51
|
+
}
|
|
52
|
+
if (!reqCtx.body) {
|
|
53
|
+
return this.error(400, 'Request body is empty (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6791)');
|
|
54
|
+
}
|
|
55
|
+
let body;
|
|
56
|
+
try {
|
|
57
|
+
body = JSON.parse(reqCtx.body);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return this.error(400, 'Request body must be valid JSON (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6792)');
|
|
61
|
+
}
|
|
62
|
+
const { primaryTjpAddr, newManagePool, providerId, code, redirectUri, email } = body;
|
|
63
|
+
if (!primaryTjpAddr) {
|
|
64
|
+
return this.error(400, 'primaryTjpAddr is required (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6793)');
|
|
65
|
+
}
|
|
66
|
+
if (!newManagePool || typeof newManagePool !== 'object' || newManagePool.id !== POOL_ID_MANAGE) {
|
|
67
|
+
return this.error(400, 'newManagePool is invalid. Must be an object with id "manage" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6794)');
|
|
68
|
+
}
|
|
69
|
+
if (!newManagePool.challenges || Object.keys(newManagePool.challenges).length === 0) {
|
|
70
|
+
return this.error(400, 'newManagePool must contain pre-generated public challenges (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6795)');
|
|
71
|
+
}
|
|
72
|
+
// 1. Authenticate user credentials via OAuth code or Email OTP
|
|
73
|
+
let verifiedEmail;
|
|
74
|
+
let effectiveProvider = providerId || 'email';
|
|
75
|
+
if (providerId && code && redirectUri) {
|
|
76
|
+
const service = getCustodian();
|
|
77
|
+
const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
|
|
78
|
+
if (!userInfo || !userInfo.email) {
|
|
79
|
+
return this.error(401, `Failed to authenticate with SSO provider ${providerId} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6796)`);
|
|
80
|
+
}
|
|
81
|
+
verifiedEmail = normalizeEmail(userInfo.email);
|
|
82
|
+
}
|
|
83
|
+
else if (email && code) {
|
|
84
|
+
if (!validateEmail(email)) {
|
|
85
|
+
return this.error(400, 'Invalid email address format (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6797)');
|
|
86
|
+
}
|
|
87
|
+
verifiedEmail = normalizeEmail(email);
|
|
88
|
+
const tjpHash = await getPendingTjpHash(primaryTjpAddr);
|
|
89
|
+
const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
|
|
90
|
+
if (!pendingInfo || pendingInfo.isExpired) {
|
|
91
|
+
return this.error(400, 'Verification record missing or expired. Please request a new verification code. (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6798)');
|
|
92
|
+
}
|
|
93
|
+
const codeVerifyResult = await verifyPendingCode({
|
|
94
|
+
pendingDir: pendingInfo.pendingDir,
|
|
95
|
+
code,
|
|
96
|
+
});
|
|
97
|
+
if (!codeVerifyResult.valid) {
|
|
98
|
+
return this.error(401, codeVerifyResult.error || 'Invalid verification code (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6799)');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return this.error(400, 'Authentication credentials required (providerId+code+redirectUri or email+code) (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679a)');
|
|
103
|
+
}
|
|
104
|
+
// 2. Lookup primary identity and confirm email matches
|
|
105
|
+
const indexService = getIdentityIndexService();
|
|
106
|
+
const identityRecord = await indexService.lookupIdentityByEmail({ email: verifiedEmail });
|
|
107
|
+
if (!identityRecord || identityRecord.primaryTjpAddr !== primaryTjpAddr) {
|
|
108
|
+
return this.error(403, `Authenticated email ${verifiedEmail} does not match primary identity ${primaryTjpAddr} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679b)`);
|
|
109
|
+
}
|
|
110
|
+
// 3. Bootstrap domain metaspace and load latest keystone
|
|
111
|
+
const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
|
|
112
|
+
const space = await metaspace.getLocalUserSpace({ lock: false });
|
|
113
|
+
if (!space) {
|
|
114
|
+
return this.error(500, `Local domain space not found for identity ${primaryTjpAddr}`);
|
|
115
|
+
}
|
|
116
|
+
const keystoneService = new KeystoneService_V1();
|
|
117
|
+
const latestKeystone = await keystoneService.getLatestKeystone({
|
|
118
|
+
addr: primaryTjpAddr,
|
|
119
|
+
metaspace,
|
|
120
|
+
space
|
|
121
|
+
});
|
|
122
|
+
if (!latestKeystone || !latestKeystone.data) {
|
|
123
|
+
return this.error(404, `Primary identity keystone not found for address ${primaryTjpAddr}`);
|
|
124
|
+
}
|
|
125
|
+
// 4. Verify existing custodial manage pool
|
|
126
|
+
const prevPools = latestKeystone.data.challengePools || [];
|
|
127
|
+
const existingManagePool = prevPools.find(p => p.id === POOL_ID_MANAGE);
|
|
128
|
+
if (!existingManagePool) {
|
|
129
|
+
return this.error(400, 'Primary keystone missing active "manage" pool (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679c)');
|
|
130
|
+
}
|
|
131
|
+
// Validate new pool config matches existing manage pool config structure
|
|
132
|
+
if (existingManagePool.config?.type && newManagePool.config?.type !== existingManagePool.config.type) {
|
|
133
|
+
return this.error(400, `newManagePool type "${newManagePool.config?.type}" does not match required type "${existingManagePool.config.type}" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679d)`);
|
|
134
|
+
}
|
|
135
|
+
// 5. Build next pool set:
|
|
136
|
+
// Convert existing custodian manage pool to auxiliary custodian pool (e.g. custodian-manage-google)
|
|
137
|
+
// and install user's newManagePool as 'manage'.
|
|
138
|
+
const custodianPoolId = `${CUSTODIAN_POOL_ID_PREFIX}${effectiveProvider}`;
|
|
139
|
+
const auxiliaryCustodianPool = {
|
|
140
|
+
...existingManagePool,
|
|
141
|
+
id: custodianPoolId,
|
|
142
|
+
};
|
|
143
|
+
const nextPools = [];
|
|
144
|
+
for (const pool of prevPools) {
|
|
145
|
+
if (pool.id === POOL_ID_MANAGE) {
|
|
146
|
+
nextPools.push(newManagePool);
|
|
147
|
+
nextPools.push(auxiliaryCustodianPool);
|
|
148
|
+
}
|
|
149
|
+
else if (pool.id === custodianPoolId) {
|
|
150
|
+
// Skip if already present to prevent duplicate
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
nextPools.push(pool);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// 6. Sign evolution turn using server's custodian secret
|
|
157
|
+
const ssoConfig = loadSsoServerConfig();
|
|
158
|
+
const serverSecret = ssoConfig.ssoServerKdfSecret;
|
|
159
|
+
const primarySecret = await hash({ s: `${serverSecret}_custodian_${verifiedEmail}` });
|
|
160
|
+
const claim = {
|
|
161
|
+
verb: KEYSTONE_VERB_MANAGE,
|
|
162
|
+
target: getIbGibAddr({ ibGib: latestKeystone })
|
|
163
|
+
};
|
|
164
|
+
const evolvedKeystone = await keystoneService.sign({
|
|
165
|
+
latestKeystone,
|
|
166
|
+
masterSecret: primarySecret,
|
|
167
|
+
claim,
|
|
168
|
+
poolId: POOL_ID_MANAGE,
|
|
169
|
+
metaspace,
|
|
170
|
+
space,
|
|
171
|
+
dataToPatch: {
|
|
172
|
+
challengePools: nextPools,
|
|
173
|
+
frameDetails: {
|
|
174
|
+
action: 'add_master_password',
|
|
175
|
+
custodyMode: 'hybrid',
|
|
176
|
+
elevatedAt: new Date().toISOString(),
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
// 7. Persist evolved keystone in domain space
|
|
181
|
+
await metaspace.put({ ibGibs: [evolvedKeystone], space });
|
|
182
|
+
await metaspace.registerNewIbGib({ ibGib: evolvedKeystone, space });
|
|
183
|
+
const response = {
|
|
184
|
+
success: true,
|
|
185
|
+
primaryTjpAddr,
|
|
186
|
+
primaryKeystone: evolvedKeystone,
|
|
187
|
+
message: 'Successfully elevated identity to sovereign master password'
|
|
188
|
+
};
|
|
189
|
+
return this.ok(response);
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
193
|
+
return this.error(500, `Internal error adding master password: ${extractErrorMsg(error)}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=keystone-custodian-add-master-password.handler.mjs.map
|
package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keystone-custodian-add-master-password.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAC5G,OAAO,EAAE,wBAAwB,EAAE,MAAM,+DAA+D,CAAC;AAEzG,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAE/H,MAAM,OAAO,GAAG,gBAAgB,IAAI,IAAI,CAAC;AAEzC,IAAI,SAA0C,CAAC;AAC/C,SAAS,YAAY;IACjB,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,SAAS,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAkBD;;GAEG;AACH,MAAM,OAAO,yCAA0C,SAAQ,mBAAyC;IACjF,EAAE,GAAW,IAAI,yCAAyC,CAAC,IAAI,GAAG,CAAC;IACnE,MAAM,GAAuB,MAAM,CAAC;IACpC,KAAK,GAAG,gBAAgB,CAAC,sCAAsC,CAAC;IAEzE,KAAK,CAAC,eAAe,CAC3B,MAA4C;QAE5C,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;QACtD,IAAI,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC,CAAC;YAAC,CAAC;YAExF,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,6DAA6D,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,IAA2C,CAAC;YAChD,IAAI,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uEAAuE,CAAC,CAAC;YACpG,CAAC;YAED,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;YAErF,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,kEAAkE,CAAC,CAAC;YAC/F,CAAC;YAED,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;gBAC7F,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oGAAoG,CAAC,CAAC;YACjI,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,kGAAkG,CAAC,CAAC;YAC/H,CAAC;YAED,+DAA+D;YAC/D,IAAI,aAAqB,CAAC;YAC1B,IAAI,iBAAiB,GAAW,UAAU,IAAI,OAAO,CAAC;YAEtD,IAAI,UAAU,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC/E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,4CAA4C,UAAU,wCAAwC,CAAC,CAAC;gBAC3H,CAAC;gBACD,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oEAAoE,CAAC,CAAC;gBACjG,CAAC;gBACD,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAEtC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBACxD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAE7H,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;oBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uHAAuH,CAAC,CAAC;gBACpJ,CAAC;gBAED,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAAC;oBAC7C,UAAU,EAAE,WAAW,CAAC,UAAU;oBAClC,IAAI;iBACP,CAAC,CAAC;gBAEH,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAK,IAAI,iEAAiE,CAAC,CAAC;gBACxH,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uHAAuH,CAAC,CAAC;YACpJ,CAAC;YAED,uDAAuD;YACvD,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,cAAc,KAAK,cAAc,EAAE,CAAC;gBACtE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,aAAa,oCAAoC,cAAc,wCAAwC,CAAC,CAAC;YAC3J,CAAC;YAED,yDAAyD;YACzD,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,6CAA6C,cAAc,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACjD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,iBAAiB,CAAC;gBAC3D,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,KAAK;aACR,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,mDAAmD,cAAc,EAAE,CAAC,CAAC;YAChG,CAAC;YAED,2CAA2C;YAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;YAC3D,MAAM,kBAAkB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;YACxE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,qFAAqF,CAAC,CAAC;YAClH,CAAC;YAED,yEAAyE;YACzE,IAAI,kBAAkB,CAAC,MAAM,EAAE,IAAI,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,KAAK,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,aAAa,CAAC,MAAM,EAAE,IAAI,mCAAmC,kBAAkB,CAAC,MAAM,CAAC,IAAI,yCAAyC,CAAC,CAAC;YACxL,CAAC;YAED,0BAA0B;YAC1B,oGAAoG;YACpG,gDAAgD;YAChD,MAAM,eAAe,GAAG,GAAG,wBAAwB,GAAG,iBAAiB,EAAE,CAAC;YAC1E,MAAM,sBAAsB,GAA0B;gBAClD,GAAG,kBAAkB;gBACrB,EAAE,EAAE,eAAe;aACtB,CAAC;YAEF,MAAM,SAAS,GAA4B,EAAE,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC3B,IAAI,IAAI,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;oBAC7B,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC9B,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC3C,CAAC;qBAAM,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe,EAAE,CAAC;oBACrC,+CAA+C;gBACnD,CAAC;qBAAM,CAAC;oBACJ,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YAED,yDAAyD;YACzD,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;YACxC,MAAM,YAAY,GAAG,SAAS,CAAC,kBAAkB,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,cAAc,aAAa,EAAE,EAAE,CAAC,CAAC;YAEtF,MAAM,KAAK,GAA2B;gBAClC,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;aAClD,CAAC;YAEF,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC;gBAC/C,cAAc;gBACd,YAAY,EAAE,aAAa;gBAC3B,KAAK;gBACL,MAAM,EAAE,cAAc;gBACtB,SAAS;gBACT,KAAK;gBACL,WAAW,EAAE;oBACT,cAAc,EAAE,SAAS;oBACzB,YAAY,EAAE;wBACV,MAAM,EAAE,qBAAqB;wBAC7B,WAAW,EAAE,QAAQ;wBACrB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACvC;iBACJ;aACJ,CAAC,CAAC;YAEH,8CAA8C;YAC9C,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1D,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAA2C;gBACrD,OAAO,EAAE,IAAI;gBACb,cAAc;gBACd,eAAe,EAAE,eAAe;gBAChC,OAAO,EAAE,6DAA6D;aACzE,CAAC;YAEF,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAE7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,0CAA0C,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-login.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAevE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,UAAmB,EAAE,EAAE,MAAM,CAA+B;IAC5D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAuC;IAE/D,UAAyB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE7D;IAED,UAAyB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEhE;IAED,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"sso-login.handler.d.mts","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAevE,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,UAAmB,EAAE,EAAE,MAAM,CAA+B;IAC5D,UAAmB,MAAM,EAAE,kBAAkB,CAAU;IACvD,UAAmB,KAAK,SAAuC;IAE/D,UAAyB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE7D;IAED,UAAyB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEhE;IAED,UAAgB,eAAe,CAC3B,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,GAC7C,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAuIrC;CACJ"}
|
|
@@ -111,6 +111,7 @@ export class SsoLoginHandler extends ServeGibHandlerBase {
|
|
|
111
111
|
client: 'space-gib-server',
|
|
112
112
|
role: 'custodian-primary',
|
|
113
113
|
custodianProvider: providerId,
|
|
114
|
+
custodyMode: 'full',
|
|
114
115
|
[`rawSSOName-${providerId}`]: rawSSOName,
|
|
115
116
|
});
|
|
116
117
|
const configs = await primaryBuilder.compileConfigs();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-login.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sso-login.handler.mjs","sourceRoot":"","sources":["../../../../../src/serve-gib/handlers/api/keystone/sso-login.handler.mts"],"names":[],"mappings":"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"}
|
|
@@ -54,5 +54,9 @@ export declare class IdentityIndexService {
|
|
|
54
54
|
/**
|
|
55
55
|
* Singleton factory getter for the IdentityIndexService.
|
|
56
56
|
*/
|
|
57
|
-
export declare function getIdentityIndexService(): IdentityIndexService;
|
|
57
|
+
export declare function getIdentityIndexService(opts?: IdentityIndexServiceOptions): IdentityIndexService;
|
|
58
|
+
/**
|
|
59
|
+
* Resets the cached singleton instance (useful during testing across different data directories).
|
|
60
|
+
*/
|
|
61
|
+
export declare function resetIdentityIndexService(): void;
|
|
58
62
|
//# sourceMappingURL=identity-index-service.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-index-service.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAIxH;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,YAAY,OAAO,CAAC,EAAE,2BAA2B,EAKhD;IA6CD;;;;OAIG;IACG,kBAAkB,CAAC,EACrB,KAAK,EACL,OAAO,EACP,cAAc,GACjB,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,cAAc,CAAC,EAAE,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyBpC;IAED;;;OAGG;IACG,qBAAqB,CAAC,EACxB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAQ5F;IAED;;;OAGG;IACG,aAAa,CAAC,EAChB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAmB3C;IAED;;;OAGG;IACG,mBAAmB,CAAC,EACtB,SAAS,GACZ,EAAE;QACC,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAwB3C;IAED;;;OAGG;IACG,oBAAoB,CAAC,EACvB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnB;CACJ;AAID;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,
|
|
1
|
+
{"version":3,"file":"identity-index-service.d.mts","sourceRoot":"","sources":["../../../src/serve-gib/identity-index/identity-index-service.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAKzD,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAIxH;;GAEG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,EAAE,CAAoC;IAC9C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IAErB,YAAY,OAAO,CAAC,EAAE,2BAA2B,EAKhD;IA6CD;;;;OAIG;IACG,kBAAkB,CAAC,EACrB,KAAK,EACL,OAAO,EACP,cAAc,GACjB,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,SAAS,CAAC;QACpB,cAAc,CAAC,EAAE,SAAS,CAAC;KAC9B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyBpC;IAED;;;OAGG;IACG,qBAAqB,CAAC,EACxB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAQ5F;IAED;;;OAGG;IACG,aAAa,CAAC,EAChB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAmB3C;IAED;;;OAGG;IACG,mBAAmB,CAAC,EACtB,SAAS,GACZ,EAAE;QACC,SAAS,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAwB3C;IAED;;;OAGG;IACG,oBAAoB,CAAC,EACvB,KAAK,GACR,EAAE;QACC,KAAK,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC,CAYnB;CACJ;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,2BAA2B,GAAG,oBAAoB,CAQhG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -193,10 +193,19 @@ let _identityIndexService;
|
|
|
193
193
|
/**
|
|
194
194
|
* Singleton factory getter for the IdentityIndexService.
|
|
195
195
|
*/
|
|
196
|
-
export function getIdentityIndexService() {
|
|
196
|
+
export function getIdentityIndexService(opts) {
|
|
197
|
+
if (opts) {
|
|
198
|
+
return new IdentityIndexService(opts);
|
|
199
|
+
}
|
|
197
200
|
if (!_identityIndexService) {
|
|
198
201
|
_identityIndexService = new IdentityIndexService();
|
|
199
202
|
}
|
|
200
203
|
return _identityIndexService;
|
|
201
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* Resets the cached singleton instance (useful during testing across different data directories).
|
|
207
|
+
*/
|
|
208
|
+
export function resetIdentityIndexService() {
|
|
209
|
+
_identityIndexService = undefined;
|
|
210
|
+
}
|
|
202
211
|
//# 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":"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
|
|
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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"}
|
|
@@ -33,6 +33,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
|
|
|
33
33
|
export * from './handlers/api/keystone/sso-login.handler.mjs';
|
|
34
34
|
export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
35
35
|
export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
36
|
+
export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
|
|
36
37
|
export * from './handlers/api/email/email-inbound.handler.mjs';
|
|
37
38
|
export * from './handlers/api/email/email-outbound.handler.mjs';
|
|
38
39
|
export * from './handlers/api/email/email-verification-code.handler.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,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;
|
|
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,4EAA4E,CAAC;AAC3F,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;AAqB9C,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,CA2B3G"}
|
package/dist/serve-gib/index.mjs
CHANGED
|
@@ -34,6 +34,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
|
|
|
34
34
|
export * from './handlers/api/keystone/sso-login.handler.mjs';
|
|
35
35
|
export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
36
36
|
export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
37
|
+
export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
|
|
37
38
|
export * from './handlers/api/email/email-inbound.handler.mjs';
|
|
38
39
|
export * from './handlers/api/email/email-outbound.handler.mjs';
|
|
39
40
|
export * from './handlers/api/email/email-verification-code.handler.mjs';
|
|
@@ -56,6 +57,7 @@ import { SsoLoginHandler } from './handlers/api/keystone/sso-login.handler.mjs';
|
|
|
56
57
|
import { SsoConfigHandler } from './handlers/api/keystone/sso-config.handler.mjs';
|
|
57
58
|
import { KeystoneCustodianGenesisHandler } from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
58
59
|
import { KeystoneCustodianRegisterDelegateHandler } from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
60
|
+
import { KeystoneCustodianAddMasterPasswordHandler } from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
|
|
59
61
|
import { EmailInboundHandler } from './handlers/api/email/email-inbound.handler.mjs';
|
|
60
62
|
import { EmailOutboundHandler } from './handlers/api/email/email-outbound.handler.mjs';
|
|
61
63
|
import { EmailVerificationCodeHandler } from './handlers/api/email/email-verification-code.handler.mjs';
|
|
@@ -79,6 +81,7 @@ export function getStandardServeGibHandlers(opts = {}) {
|
|
|
79
81
|
new SsoConfigHandler(),
|
|
80
82
|
new KeystoneCustodianGenesisHandler(),
|
|
81
83
|
new KeystoneCustodianRegisterDelegateHandler(),
|
|
84
|
+
new KeystoneCustodianAddMasterPasswordHandler(),
|
|
82
85
|
new EmailInboundHandler(),
|
|
83
86
|
new EmailOutboundHandler(),
|
|
84
87
|
new EmailVerificationCodeHandler(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/serve-gib/index.mts"],"names":[],"mappings":"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"}
|
|
@@ -114,6 +114,10 @@ export declare const API_PATH_REGEXES: {
|
|
|
114
114
|
* /api/identity/custodian/register-delegate
|
|
115
115
|
*/
|
|
116
116
|
KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: RegExp;
|
|
117
|
+
/**
|
|
118
|
+
* /api/identity/custodian/add-master-password
|
|
119
|
+
*/
|
|
120
|
+
KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: RegExp;
|
|
117
121
|
};
|
|
118
122
|
export declare const VALID_STATIC_PATH_REGEX: RegExp;
|
|
119
123
|
//# 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;IACV;;OAEG;IACH,uBAAuB;IAEvB;;OAEG;IACH,YAAY;IACZ,iBAAiB;IAEjB;;OAEG;IACH,0BAA0B;IAE1B;;OAEG;IACH,oCAAoC;
|
|
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;IAEpC;;OAEG;IACH,sCAAsC;CACzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAA4B,CAAC"}
|
|
@@ -119,6 +119,10 @@ export const API_PATH_REGEXES = {
|
|
|
119
119
|
* /api/identity/custodian/register-delegate
|
|
120
120
|
*/
|
|
121
121
|
KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: /^\/api\/identity\/custodian\/register-delegate\/?$/i,
|
|
122
|
+
/**
|
|
123
|
+
* /api/identity/custodian/add-master-password
|
|
124
|
+
*/
|
|
125
|
+
KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: /^\/api\/identity\/custodian\/add-master-password\/?$/i,
|
|
122
126
|
};
|
|
123
127
|
export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;
|
|
124
128
|
//# 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;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;
|
|
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;IAE3F;;OAEG;IACH,sCAAsC,EAAE,uDAAuD;CAClG,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAC"}
|
|
@@ -91,3 +91,40 @@ Attempt to re-submit a previously consumed `custodianReqs` payload to `POST /api
|
|
|
91
91
|
3. Verify rejection outcome:
|
|
92
92
|
- Server rejects the request with **HTTP 409 Conflict**:
|
|
93
93
|
`"Custodian requirements payload has already been used. Nonce single-turn reservation violation."`
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
### Phase 4: Keystone Details Inspection & Sovereign Elevation
|
|
97
|
+
Inspect the identity in `<ibgib-keystone-details>` to verify that capabilities, device badges, and password options adapt dynamically to the custodial state, and add a sovereign master password.
|
|
98
|
+
|
|
99
|
+
#### Steps
|
|
100
|
+
1. In Browser 1, open `<ibgib-identity-header>` and click the active identity to open `<ibgib-keystone-details>`.
|
|
101
|
+
2. Verify dynamic UI elements:
|
|
102
|
+
- **Password Card**: Displays **"Add Master Password"** (with New Password and Confirm Password inputs; Current Password is hidden).
|
|
103
|
+
- **SSO Status Card**: Displays `"Google (Primary Account) ✅"` or provider primary indicator.
|
|
104
|
+
- **Registered Delegates Table**:
|
|
105
|
+
- Browser 1's delegate displays the green **"This Device"** badge.
|
|
106
|
+
- Browser 2's delegate (from Phase 2) displays the blue **"Remote Device"** badge.
|
|
107
|
+
3. Click **View Details** on Browser 2's remote delegate:
|
|
108
|
+
- Verify modal opens showing remote device metadata without throwing or failing.
|
|
109
|
+
4. In the **Add Master Password** card, enter `<E2E_TEST_NEW_PASSWORD>` in New Password and Confirm Password inputs, and click **Add Master Password**.
|
|
110
|
+
5. Verify outcomes:
|
|
111
|
+
- Client adds a sovereign `manage` pool via `keystoneService.addPools()`, evolves the primary identity, and syncs to server.
|
|
112
|
+
- The password card updates dynamically to **"Change Password"** (now displaying Current Password input).
|
|
113
|
+
- Identity capability transitions from Custodial to **Hybrid**.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### Phase 5: Silent Background Sync & Expired Session Renewal ("Sign Back In")
|
|
117
|
+
Verify that daily background sync operations execute silently via stored IndexedDB delegate tokens ($S_D$), and verify that expired sync delegates cleanly pause sync and prompt the user to "Sign Back In".
|
|
118
|
+
|
|
119
|
+
#### Steps
|
|
120
|
+
1. In Browser 1, click **Check for Updates** and **Update Identity**:
|
|
121
|
+
- Verify sync succeeds silently in the background without prompting for master passwords.
|
|
122
|
+
2. Simulate delegate expiration / session expiry:
|
|
123
|
+
- Option A: Clear the stored device delegate secret from IndexedDB (`space_gib_db` -> `space_gib_store` -> delete `ibgib_device_delegate_secret_<primaryTjpAddr>`).
|
|
124
|
+
- Option B: Test with a short TTL development profile (`sync-profile.dev.json` with `defaultTtlSeconds: 10`) and wait for expiration.
|
|
125
|
+
3. Trigger a sync check or page refresh:
|
|
126
|
+
- Verify `KeystoneSyncService` detects the expired / missing delegate token and fires `EVENT_IBGIB_IDENTITY_RENEWAL_REQUIRED`.
|
|
127
|
+
- Verify the UI prompts the user to **"Sign Back In"**.
|
|
128
|
+
4. Re-authenticate via Email OTP (or Google SSO / Master Password):
|
|
129
|
+
- Verify single-turn re-authentication generates and registers a fresh outward sync delegate ($D_{\text{device}}$).
|
|
130
|
+
- Verify the new secret ($S_D$) is stored in IndexedDB and silent background sync resumes seamlessly.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/node-gib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.20",
|
|
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",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@ibgib/helper-gib": "^0.0.37",
|
|
28
28
|
"@ibgib/ts-gib": "^0.5.34",
|
|
29
|
-
"@ibgib/core-gib": "^0.1.
|
|
29
|
+
"@ibgib/core-gib": "^0.1.75",
|
|
30
30
|
"@ibgib/encrypt-gib": "^0.3.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler
|
|
3
|
+
*
|
|
4
|
+
* POST /api/identity/custodian/add-master-password
|
|
5
|
+
*
|
|
6
|
+
* Single-turn sovereignty elevation endpoint for purely custodial identities.
|
|
7
|
+
* Authenticates the user via fresh OAuth code or 6-digit email OTP, validates that
|
|
8
|
+
* the provided `newManagePool` config matches the existing custodian pool config,
|
|
9
|
+
* evolves the custodian manage pool into an auxiliary inward custodian pool (e.g. `custodian-manage-google`),
|
|
10
|
+
* installs the user's new sovereign pool as `manage`, and signs the evolution using the server's custodian secret.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { extractErrorMsg, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
14
|
+
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
15
|
+
import { getTjpAddr } from '@ibgib/core-gib/dist/common/other/ibgib-helper.mjs';
|
|
16
|
+
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
17
|
+
import { KeystoneChallengePool } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
|
|
18
|
+
import { KEYSTONE_VERB_MANAGE, POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
|
|
19
|
+
import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
|
|
20
|
+
import { KeystoneClaim } from '@ibgib/core-gib/dist/keystone/keystone-types.mjs';
|
|
21
|
+
import { validateEmail } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
|
|
22
|
+
|
|
23
|
+
import { GLOBAL_LOG_A_LOT } from '../../../constants.mjs';
|
|
24
|
+
import { ServeGibHandlerBase } from '../../handler-base.mjs';
|
|
25
|
+
import { RequestContext, ResponseResult, ServeGibHttpMethod } from '../../../types.mjs';
|
|
26
|
+
import { API_PATH_REGEXES } from '../../../path-constants.mjs';
|
|
27
|
+
import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
|
|
28
|
+
import { getIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
|
|
29
|
+
import { normalizeEmail } from '../../../identity-index/identity-index-helpers.mjs';
|
|
30
|
+
import { loadSsoServerConfig } from '../../../../identity/sso/sso-config-helper.mjs';
|
|
31
|
+
import { SsoCustodianService } from '../../../../identity/sso/sso-custodian-service.mjs';
|
|
32
|
+
import { SsoProviderId } from '../../../../identity/sso/sso-types.mjs';
|
|
33
|
+
import { getPendingStagingDir, getPendingTjpHash, verifyPendingCode } from '../../../../email/verify/email-verify-helpers.mjs';
|
|
34
|
+
|
|
35
|
+
const logalot = GLOBAL_LOG_A_LOT || true;
|
|
36
|
+
|
|
37
|
+
let custodian: SsoCustodianService | undefined;
|
|
38
|
+
function getCustodian(): SsoCustodianService {
|
|
39
|
+
if (!custodian) {
|
|
40
|
+
const config = loadSsoServerConfig();
|
|
41
|
+
custodian = new SsoCustodianService(config);
|
|
42
|
+
}
|
|
43
|
+
return custodian;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface CustodianAddMasterPasswordRequestBody {
|
|
47
|
+
primaryTjpAddr: string;
|
|
48
|
+
newManagePool: KeystoneChallengePool;
|
|
49
|
+
providerId?: SsoProviderId;
|
|
50
|
+
code?: string;
|
|
51
|
+
redirectUri?: string;
|
|
52
|
+
email?: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface CustodianAddMasterPasswordResponseBody {
|
|
56
|
+
success: boolean;
|
|
57
|
+
primaryTjpAddr: string;
|
|
58
|
+
primaryKeystone: any;
|
|
59
|
+
message?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* POST /api/identity/custodian/add-master-password
|
|
64
|
+
*/
|
|
65
|
+
export class KeystoneCustodianAddMasterPasswordHandler extends ServeGibHandlerBase<undefined, undefined> {
|
|
66
|
+
protected override lc: string = `[${KeystoneCustodianAddMasterPasswordHandler.name}]`;
|
|
67
|
+
protected override method: ServeGibHttpMethod = 'POST';
|
|
68
|
+
protected override regex = API_PATH_REGEXES.KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD;
|
|
69
|
+
|
|
70
|
+
protected async handleRouteImpl(
|
|
71
|
+
reqCtx: RequestContext<undefined, undefined>
|
|
72
|
+
): Promise<ResponseResult | undefined> {
|
|
73
|
+
const lc = `${this.lc}[${this.handleRouteImpl.name}]`;
|
|
74
|
+
try {
|
|
75
|
+
if (logalot) { console.log(`${lc} starting... (I: 8a1b2c3d4e5f67890a1b2c3d4e5f6790)`); }
|
|
76
|
+
|
|
77
|
+
if (reqCtx.method !== 'POST') {
|
|
78
|
+
return this.error(405, 'Method Not Allowed');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (!reqCtx.body) {
|
|
82
|
+
return this.error(400, 'Request body is empty (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6791)');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let body: CustodianAddMasterPasswordRequestBody;
|
|
86
|
+
try {
|
|
87
|
+
body = JSON.parse(reqCtx.body);
|
|
88
|
+
} catch {
|
|
89
|
+
return this.error(400, 'Request body must be valid JSON (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6792)');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const { primaryTjpAddr, newManagePool, providerId, code, redirectUri, email } = body;
|
|
93
|
+
|
|
94
|
+
if (!primaryTjpAddr) {
|
|
95
|
+
return this.error(400, 'primaryTjpAddr is required (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6793)');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (!newManagePool || typeof newManagePool !== 'object' || newManagePool.id !== POOL_ID_MANAGE) {
|
|
99
|
+
return this.error(400, 'newManagePool is invalid. Must be an object with id "manage" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6794)');
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (!newManagePool.challenges || Object.keys(newManagePool.challenges).length === 0) {
|
|
103
|
+
return this.error(400, 'newManagePool must contain pre-generated public challenges (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6795)');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// 1. Authenticate user credentials via OAuth code or Email OTP
|
|
107
|
+
let verifiedEmail: string;
|
|
108
|
+
let effectiveProvider: string = providerId || 'email';
|
|
109
|
+
|
|
110
|
+
if (providerId && code && redirectUri) {
|
|
111
|
+
const service = getCustodian();
|
|
112
|
+
const userInfo = await service.getOAuthUserInfo(providerId, code, redirectUri);
|
|
113
|
+
if (!userInfo || !userInfo.email) {
|
|
114
|
+
return this.error(401, `Failed to authenticate with SSO provider ${providerId} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6796)`);
|
|
115
|
+
}
|
|
116
|
+
verifiedEmail = normalizeEmail(userInfo.email);
|
|
117
|
+
} else if (email && code) {
|
|
118
|
+
if (!validateEmail(email)) {
|
|
119
|
+
return this.error(400, 'Invalid email address format (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6797)');
|
|
120
|
+
}
|
|
121
|
+
verifiedEmail = normalizeEmail(email);
|
|
122
|
+
|
|
123
|
+
const tjpHash = await getPendingTjpHash(primaryTjpAddr);
|
|
124
|
+
const pendingInfo = reqCtx.dataDir && tjpHash ? await getPendingStagingDir({ dataDir: reqCtx.dataDir, tjpHash }) : undefined;
|
|
125
|
+
|
|
126
|
+
if (!pendingInfo || pendingInfo.isExpired) {
|
|
127
|
+
return this.error(400, 'Verification record missing or expired. Please request a new verification code. (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6798)');
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const codeVerifyResult = await verifyPendingCode({
|
|
131
|
+
pendingDir: pendingInfo.pendingDir,
|
|
132
|
+
code,
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
if (!codeVerifyResult.valid) {
|
|
136
|
+
return this.error(401, codeVerifyResult.error || 'Invalid verification code (E: 8a1b2c3d4e5f67890a1b2c3d4e5f6799)');
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
return this.error(400, 'Authentication credentials required (providerId+code+redirectUri or email+code) (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679a)');
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// 2. Lookup primary identity and confirm email matches
|
|
143
|
+
const indexService = getIdentityIndexService();
|
|
144
|
+
const identityRecord = await indexService.lookupIdentityByEmail({ email: verifiedEmail });
|
|
145
|
+
if (!identityRecord || identityRecord.primaryTjpAddr !== primaryTjpAddr) {
|
|
146
|
+
return this.error(403, `Authenticated email ${verifiedEmail} does not match primary identity ${primaryTjpAddr} (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679b)`);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// 3. Bootstrap domain metaspace and load latest keystone
|
|
150
|
+
const metaspace = await bootstrapDomainMetaspace(primaryTjpAddr, reqCtx.dataDir);
|
|
151
|
+
const space = await metaspace.getLocalUserSpace({ lock: false });
|
|
152
|
+
if (!space) {
|
|
153
|
+
return this.error(500, `Local domain space not found for identity ${primaryTjpAddr}`);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const keystoneService = new KeystoneService_V1();
|
|
157
|
+
const latestKeystone = await keystoneService.getLatestKeystone({
|
|
158
|
+
addr: primaryTjpAddr,
|
|
159
|
+
metaspace,
|
|
160
|
+
space
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (!latestKeystone || !latestKeystone.data) {
|
|
164
|
+
return this.error(404, `Primary identity keystone not found for address ${primaryTjpAddr}`);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// 4. Verify existing custodial manage pool
|
|
168
|
+
const prevPools = latestKeystone.data.challengePools || [];
|
|
169
|
+
const existingManagePool = prevPools.find(p => p.id === POOL_ID_MANAGE);
|
|
170
|
+
if (!existingManagePool) {
|
|
171
|
+
return this.error(400, 'Primary keystone missing active "manage" pool (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679c)');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Validate new pool config matches existing manage pool config structure
|
|
175
|
+
if (existingManagePool.config?.type && newManagePool.config?.type !== existingManagePool.config.type) {
|
|
176
|
+
return this.error(400, `newManagePool type "${newManagePool.config?.type}" does not match required type "${existingManagePool.config.type}" (E: 8a1b2c3d4e5f67890a1b2c3d4e5f679d)`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// 5. Build next pool set:
|
|
180
|
+
// Convert existing custodian manage pool to auxiliary custodian pool (e.g. custodian-manage-google)
|
|
181
|
+
// and install user's newManagePool as 'manage'.
|
|
182
|
+
const custodianPoolId = `${CUSTODIAN_POOL_ID_PREFIX}${effectiveProvider}`;
|
|
183
|
+
const auxiliaryCustodianPool: KeystoneChallengePool = {
|
|
184
|
+
...existingManagePool,
|
|
185
|
+
id: custodianPoolId,
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
const nextPools: KeystoneChallengePool[] = [];
|
|
189
|
+
for (const pool of prevPools) {
|
|
190
|
+
if (pool.id === POOL_ID_MANAGE) {
|
|
191
|
+
nextPools.push(newManagePool);
|
|
192
|
+
nextPools.push(auxiliaryCustodianPool);
|
|
193
|
+
} else if (pool.id === custodianPoolId) {
|
|
194
|
+
// Skip if already present to prevent duplicate
|
|
195
|
+
} else {
|
|
196
|
+
nextPools.push(pool);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// 6. Sign evolution turn using server's custodian secret
|
|
201
|
+
const ssoConfig = loadSsoServerConfig();
|
|
202
|
+
const serverSecret = ssoConfig.ssoServerKdfSecret;
|
|
203
|
+
const primarySecret = await hash({ s: `${serverSecret}_custodian_${verifiedEmail}` });
|
|
204
|
+
|
|
205
|
+
const claim: Partial<KeystoneClaim> = {
|
|
206
|
+
verb: KEYSTONE_VERB_MANAGE,
|
|
207
|
+
target: getIbGibAddr({ ibGib: latestKeystone })
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const evolvedKeystone = await keystoneService.sign({
|
|
211
|
+
latestKeystone,
|
|
212
|
+
masterSecret: primarySecret,
|
|
213
|
+
claim,
|
|
214
|
+
poolId: POOL_ID_MANAGE,
|
|
215
|
+
metaspace,
|
|
216
|
+
space,
|
|
217
|
+
dataToPatch: {
|
|
218
|
+
challengePools: nextPools,
|
|
219
|
+
frameDetails: {
|
|
220
|
+
action: 'add_master_password',
|
|
221
|
+
custodyMode: 'hybrid',
|
|
222
|
+
elevatedAt: new Date().toISOString(),
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// 7. Persist evolved keystone in domain space
|
|
228
|
+
await metaspace.put({ ibGibs: [evolvedKeystone], space });
|
|
229
|
+
await metaspace.registerNewIbGib({ ibGib: evolvedKeystone, space });
|
|
230
|
+
|
|
231
|
+
const response: CustodianAddMasterPasswordResponseBody = {
|
|
232
|
+
success: true,
|
|
233
|
+
primaryTjpAddr,
|
|
234
|
+
primaryKeystone: evolvedKeystone,
|
|
235
|
+
message: 'Successfully elevated identity to sovereign master password'
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
return this.ok(response);
|
|
239
|
+
|
|
240
|
+
} catch (error) {
|
|
241
|
+
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
242
|
+
return this.error(500, `Internal error adding master password: ${extractErrorMsg(error)}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { existsSync, rmSync } from 'node:fs';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
respecfully,
|
|
5
|
+
iReckon,
|
|
6
|
+
ifWe,
|
|
7
|
+
ifWeMight
|
|
8
|
+
} from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
9
|
+
|
|
10
|
+
import { KeystoneCustodianGenesisHandler } from './keystone-custodian-genesis.handler.mjs';
|
|
11
|
+
import { KeystoneCustodianAddMasterPasswordHandler } from './keystone-custodian-add-master-password.handler.mjs';
|
|
12
|
+
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
13
|
+
import { POOL_ID_MANAGE } from '@ibgib/core-gib/dist/keystone/keystone-constants.mjs';
|
|
14
|
+
import { CUSTODIAN_POOL_ID_PREFIX } from '@ibgib/core-gib/dist/keystone/delegate/delegate-constants.mjs';
|
|
15
|
+
import { generatePoolChallenges } from '@ibgib/core-gib/dist/keystone/keystone-helpers.mjs';
|
|
16
|
+
import { getPendingStagingDir, getPendingTjpHash, savePendingCodeRecord, savePendingStagingKeystone } from '../../../../email/verify/email-verify-helpers.mjs';
|
|
17
|
+
import { resetIdentityIndexService } from '../../../identity-index/identity-index-service.mjs';
|
|
18
|
+
|
|
19
|
+
const sir = `[${import.meta.url}]`;
|
|
20
|
+
|
|
21
|
+
await respecfully(sir, 'KeystoneCustodianAddMasterPasswordHandler', async () => {
|
|
22
|
+
const testDataDir = './test-data-custodian-add-password';
|
|
23
|
+
|
|
24
|
+
if (existsSync(testDataDir)) {
|
|
25
|
+
rmSync(testDataDir, { recursive: true, force: true });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const origDataDir = process.env.DATA_DIR;
|
|
29
|
+
process.env.DATA_DIR = testDataDir;
|
|
30
|
+
process.env.KEYSTONE_PROFILE_CUSTODIAN_PRIMARY = 'primary-profile.dev';
|
|
31
|
+
process.env.SSO_SERVER_KDF_SECRET = 'test-sso-server-kdf-secret-12345';
|
|
32
|
+
process.env.SESSION_SECRET = 'test-session-secret-12345';
|
|
33
|
+
resetIdentityIndexService();
|
|
34
|
+
|
|
35
|
+
const genesisHandler = new KeystoneCustodianGenesisHandler();
|
|
36
|
+
const addPasswordHandler = new KeystoneCustodianAddMasterPasswordHandler();
|
|
37
|
+
|
|
38
|
+
await ifWe(sir, 'reject request with 400 if required fields are missing', async () => {
|
|
39
|
+
const reqCtx: any = {
|
|
40
|
+
method: 'POST',
|
|
41
|
+
pathname: '/api/identity/custodian/add-master-password',
|
|
42
|
+
url: new URL('http://localhost/api/identity/custodian/add-master-password'),
|
|
43
|
+
body: JSON.stringify({}),
|
|
44
|
+
dataDir: testDataDir
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const res = await addPasswordHandler.handleRoute(reqCtx);
|
|
48
|
+
iReckon(sir, res?.status).isGonnaBe(400);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
await ifWe(sir, 'successfully elevate custodial identity to sovereign master password', async () => {
|
|
52
|
+
try {
|
|
53
|
+
const email = 'alice.elevate@example.com';
|
|
54
|
+
const genesisCode = '123456';
|
|
55
|
+
|
|
56
|
+
// 1. Create custodial identity via genesis handler with staged code
|
|
57
|
+
const genesisStaging = await savePendingStagingKeystone({
|
|
58
|
+
primaryTjpAddr: `pending:${email}`,
|
|
59
|
+
emails: [email],
|
|
60
|
+
dataDir: testDataDir,
|
|
61
|
+
});
|
|
62
|
+
await savePendingCodeRecord({
|
|
63
|
+
pendingDir: genesisStaging.pendingDir,
|
|
64
|
+
code: genesisCode,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const genesisReqCtx: any = {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
pathname: '/api/identity/custodian/genesis',
|
|
70
|
+
url: new URL('http://localhost/api/identity/custodian/genesis'),
|
|
71
|
+
body: JSON.stringify({ email, username: 'alice', code: genesisCode }),
|
|
72
|
+
dataDir: testDataDir
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const genesisRes = await genesisHandler.handleRoute(genesisReqCtx);
|
|
76
|
+
if (genesisRes?.status !== 201) {
|
|
77
|
+
console.error(`[DEBUG] genesisRes failed: ${genesisRes?.status}, body:`, JSON.stringify(genesisRes?.body));
|
|
78
|
+
}
|
|
79
|
+
iReckon(sir, genesisRes?.status).isGonnaBe(201);
|
|
80
|
+
|
|
81
|
+
const genesisBody = typeof genesisRes?.body === 'string' ? JSON.parse(genesisRes?.body) : genesisRes?.body;
|
|
82
|
+
const primaryTjpAddr = genesisBody.primaryTjpAddr;
|
|
83
|
+
const initialKeystone = genesisBody.primaryKeystone;
|
|
84
|
+
|
|
85
|
+
iReckon(sir, primaryTjpAddr).not.isGonnaBeUndefined();
|
|
86
|
+
iReckon(sir, initialKeystone).not.isGonnaBeUndefined();
|
|
87
|
+
|
|
88
|
+
const initialManagePool = initialKeystone.data.challengePools.find((p: any) => p.id === POOL_ID_MANAGE);
|
|
89
|
+
iReckon(sir, initialManagePool).not.isGonnaBeUndefined();
|
|
90
|
+
|
|
91
|
+
// 2. Generate new sovereign manage challenge pool locally with user's new password
|
|
92
|
+
const userNewPassword = 'AliceSuperSecretPassphrase2026!';
|
|
93
|
+
const newChallenges = await generatePoolChallenges({
|
|
94
|
+
config: initialManagePool.config,
|
|
95
|
+
masterSecret: userNewPassword,
|
|
96
|
+
});
|
|
97
|
+
const newManagePool = {
|
|
98
|
+
id: POOL_ID_MANAGE,
|
|
99
|
+
config: initialManagePool.config,
|
|
100
|
+
challenges: newChallenges,
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Stage verification code for the elevation turn
|
|
104
|
+
const elevateStaging = await savePendingStagingKeystone({
|
|
105
|
+
primaryTjpAddr,
|
|
106
|
+
emails: [email],
|
|
107
|
+
dataDir: testDataDir,
|
|
108
|
+
});
|
|
109
|
+
const elevateCode = '654321';
|
|
110
|
+
await savePendingCodeRecord({
|
|
111
|
+
pendingDir: elevateStaging.pendingDir,
|
|
112
|
+
code: elevateCode,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// 3. Call add-master-password endpoint
|
|
116
|
+
const addPasswordReqCtx: any = {
|
|
117
|
+
method: 'POST',
|
|
118
|
+
pathname: '/api/identity/custodian/add-master-password',
|
|
119
|
+
url: new URL('http://localhost/api/identity/custodian/add-master-password'),
|
|
120
|
+
body: JSON.stringify({
|
|
121
|
+
primaryTjpAddr,
|
|
122
|
+
email,
|
|
123
|
+
code: elevateCode,
|
|
124
|
+
newManagePool,
|
|
125
|
+
}),
|
|
126
|
+
dataDir: testDataDir
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const addPasswordRes = await addPasswordHandler.handleRoute(addPasswordReqCtx);
|
|
130
|
+
if (addPasswordRes?.status !== 200) {
|
|
131
|
+
console.error(`[DEBUG] addPasswordRes failed with status: ${addPasswordRes?.status}, body:`, addPasswordRes?.body);
|
|
132
|
+
}
|
|
133
|
+
iReckon(sir, addPasswordRes?.status).isGonnaBe(200);
|
|
134
|
+
|
|
135
|
+
const addPasswordBody = typeof addPasswordRes?.body === 'string' ? JSON.parse(addPasswordRes?.body) : addPasswordRes?.body;
|
|
136
|
+
iReckon(sir, addPasswordBody.success).isGonnaBeTrue();
|
|
137
|
+
iReckon(sir, addPasswordBody.primaryTjpAddr).isGonnaBe(primaryTjpAddr);
|
|
138
|
+
|
|
139
|
+
const evolvedKeystone = addPasswordBody.primaryKeystone;
|
|
140
|
+
iReckon(sir, evolvedKeystone).not.isGonnaBeUndefined();
|
|
141
|
+
iReckon(sir, evolvedKeystone.data.n).isGonnaBe(1);
|
|
142
|
+
iReckon(sir, evolvedKeystone.data.frameDetails.custodyMode).isGonnaBe('hybrid');
|
|
143
|
+
|
|
144
|
+
// Check pools: should contain both 'manage' and 'custodian-manage-email'
|
|
145
|
+
const poolIds = evolvedKeystone.data.challengePools.map((p: any) => p.id);
|
|
146
|
+
iReckon(sir, poolIds.includes('manage')).isGonnaBeTrue();
|
|
147
|
+
iReckon(sir, poolIds.includes(`${CUSTODIAN_POOL_ID_PREFIX}email`)).isGonnaBeTrue();
|
|
148
|
+
|
|
149
|
+
// 4. Verify user password solves the evolved manage pool
|
|
150
|
+
const keystoneService = new KeystoneService_V1();
|
|
151
|
+
const isUserPasswordValid = await keystoneService.verifySigningSecret({
|
|
152
|
+
keystoneIbGib: evolvedKeystone,
|
|
153
|
+
signingSecret: userNewPassword,
|
|
154
|
+
poolId: POOL_ID_MANAGE,
|
|
155
|
+
});
|
|
156
|
+
iReckon(sir, isUserPasswordValid).isGonnaBeTrue();
|
|
157
|
+
} catch (error) {
|
|
158
|
+
console.error(`[DEBUG TEST 2 EXCEPTION]`, error);
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
if (existsSync(testDataDir)) {
|
|
164
|
+
rmSync(testDataDir, { recursive: true, force: true });
|
|
165
|
+
}
|
|
166
|
+
process.env.DATA_DIR = origDataDir;
|
|
167
|
+
});
|
|
@@ -10,7 +10,7 @@ import { KeystoneCustodianGenesisHandler } from './keystone-custodian-genesis.ha
|
|
|
10
10
|
import { KeystoneCustodianRegisterDelegateHandler } from './keystone-custodian-register-delegate.handler.mjs';
|
|
11
11
|
import { KeystoneProfileBuilder } from '@ibgib/core-gib/dist/keystone/policy/keystone-profile-builder.mjs';
|
|
12
12
|
import { KeystoneService_V1 } from '@ibgib/core-gib/dist/keystone/keystone-service-v1.mjs';
|
|
13
|
-
import {
|
|
13
|
+
import { deriveDeviceDelegateSecret } from '@ibgib/core-gib/dist/keystone/delegate/delegate-helpers.mjs';
|
|
14
14
|
import { bootstrapDomainMetaspace } from '../../../bootstrap-helper.mjs';
|
|
15
15
|
|
|
16
16
|
const sir = `[${import.meta.url}]`;
|
|
@@ -58,7 +58,7 @@ await respecfully(sir, 'KeystoneCustodianRegisterDelegateHandler', async () => {
|
|
|
58
58
|
iReckon(sir, custodianReqs).not.isGonnaBeUndefined();
|
|
59
59
|
|
|
60
60
|
// Step 2: Build client delegate keystone containing custodianReqs
|
|
61
|
-
const delegateSecret = await
|
|
61
|
+
const delegateSecret = await deriveDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'phone' });
|
|
62
62
|
const delegateBuilder = KeystoneProfileBuilder.buildKeystone('sync-profile.dev')
|
|
63
63
|
.withUsername('bob-sync-phone')
|
|
64
64
|
.withDescription('Sync Delegate for bob on phone')
|
|
@@ -149,6 +149,7 @@ export class SsoLoginHandler extends ServeGibHandlerBase<undefined, undefined> {
|
|
|
149
149
|
client: 'space-gib-server',
|
|
150
150
|
role: 'custodian-primary',
|
|
151
151
|
custodianProvider: providerId,
|
|
152
|
+
custodyMode: 'full',
|
|
152
153
|
[`rawSSOName-${providerId}`]: rawSSOName,
|
|
153
154
|
});
|
|
154
155
|
|
|
@@ -218,9 +218,19 @@ let _identityIndexService: IdentityIndexService | undefined;
|
|
|
218
218
|
/**
|
|
219
219
|
* Singleton factory getter for the IdentityIndexService.
|
|
220
220
|
*/
|
|
221
|
-
export function getIdentityIndexService(): IdentityIndexService {
|
|
221
|
+
export function getIdentityIndexService(opts?: IdentityIndexServiceOptions): IdentityIndexService {
|
|
222
|
+
if (opts) {
|
|
223
|
+
return new IdentityIndexService(opts);
|
|
224
|
+
}
|
|
222
225
|
if (!_identityIndexService) {
|
|
223
226
|
_identityIndexService = new IdentityIndexService();
|
|
224
227
|
}
|
|
225
228
|
return _identityIndexService;
|
|
226
229
|
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Resets the cached singleton instance (useful during testing across different data directories).
|
|
233
|
+
*/
|
|
234
|
+
export function resetIdentityIndexService(): void {
|
|
235
|
+
_identityIndexService = undefined;
|
|
236
|
+
}
|
package/src/serve-gib/index.mts
CHANGED
|
@@ -36,6 +36,7 @@ export * from './handlers/api/keystone/sso-link.handler.mjs';
|
|
|
36
36
|
export * from './handlers/api/keystone/sso-login.handler.mjs';
|
|
37
37
|
export * from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
38
38
|
export * from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
39
|
+
export * from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
|
|
39
40
|
export * from './handlers/api/email/email-inbound.handler.mjs';
|
|
40
41
|
export * from './handlers/api/email/email-outbound.handler.mjs';
|
|
41
42
|
export * from './handlers/api/email/email-verification-code.handler.mjs';
|
|
@@ -60,6 +61,7 @@ import { SsoLoginHandler } from './handlers/api/keystone/sso-login.handler.mjs';
|
|
|
60
61
|
import { SsoConfigHandler } from './handlers/api/keystone/sso-config.handler.mjs';
|
|
61
62
|
import { KeystoneCustodianGenesisHandler } from './handlers/api/identity/keystone-custodian-genesis.handler.mjs';
|
|
62
63
|
import { KeystoneCustodianRegisterDelegateHandler } from './handlers/api/identity/keystone-custodian-register-delegate.handler.mjs';
|
|
64
|
+
import { KeystoneCustodianAddMasterPasswordHandler } from './handlers/api/identity/keystone-custodian-add-master-password.handler.mjs';
|
|
63
65
|
import { EmailInboundHandler } from './handlers/api/email/email-inbound.handler.mjs';
|
|
64
66
|
import { EmailOutboundHandler } from './handlers/api/email/email-outbound.handler.mjs';
|
|
65
67
|
import { EmailVerificationCodeHandler } from './handlers/api/email/email-verification-code.handler.mjs';
|
|
@@ -89,6 +91,7 @@ export function getStandardServeGibHandlers(opts: StandardHandlersOptions = {}):
|
|
|
89
91
|
new SsoConfigHandler(),
|
|
90
92
|
new KeystoneCustodianGenesisHandler(),
|
|
91
93
|
new KeystoneCustodianRegisterDelegateHandler(),
|
|
94
|
+
new KeystoneCustodianAddMasterPasswordHandler(),
|
|
92
95
|
new EmailInboundHandler(),
|
|
93
96
|
new EmailOutboundHandler(),
|
|
94
97
|
new EmailVerificationCodeHandler(),
|
|
@@ -134,6 +134,11 @@ export const API_PATH_REGEXES = {
|
|
|
134
134
|
* /api/identity/custodian/register-delegate
|
|
135
135
|
*/
|
|
136
136
|
KEYSTONE_CUSTODIAN_REGISTER_DELEGATE: /^\/api\/identity\/custodian\/register-delegate\/?$/i,
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* /api/identity/custodian/add-master-password
|
|
140
|
+
*/
|
|
141
|
+
KEYSTONE_CUSTODIAN_ADD_MASTER_PASSWORD: /^\/api\/identity\/custodian\/add-master-password\/?$/i,
|
|
137
142
|
};
|
|
138
143
|
|
|
139
144
|
export const VALID_STATIC_PATH_REGEX = /^\/[a-zA-Z0-9\-_\.\/]*$/;
|