@metamask-previews/seedless-onboarding-controller 2.5.1-preview-eb8c7b7a → 2.6.0-preview-2fd8e984
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/CHANGELOG.md +9 -1
- package/dist/SeedlessOnboardingController.cjs +37 -37
- package/dist/SeedlessOnboardingController.cjs.map +1 -1
- package/dist/SeedlessOnboardingController.d.cts +4 -3
- package/dist/SeedlessOnboardingController.d.cts.map +1 -1
- package/dist/SeedlessOnboardingController.d.mts +4 -3
- package/dist/SeedlessOnboardingController.d.mts.map +1 -1
- package/dist/SeedlessOnboardingController.mjs +36 -36
- package/dist/SeedlessOnboardingController.mjs.map +1 -1
- package/dist/assertions.cjs +32 -1
- package/dist/assertions.cjs.map +1 -1
- package/dist/assertions.d.cts +8 -1
- package/dist/assertions.d.cts.map +1 -1
- package/dist/assertions.d.mts +8 -1
- package/dist/assertions.d.mts.map +1 -1
- package/dist/assertions.mjs +30 -0
- package/dist/assertions.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +4 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +4 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.6.0]
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Added new persisted state value, `isSeedlessOnboardingUserAuthenticated`. ([#6288](https://github.com/MetaMask/core/pull/6288))
|
|
15
|
+
- This is for the UI state in the clients, to avoid querying sensistive controller state data to determine the social login authentication state.
|
|
16
|
+
|
|
10
17
|
### Changed
|
|
11
18
|
|
|
12
19
|
- Bump `@metamask/base-controller` from `^8.0.1` to `^8.1.0` ([#6284](https://github.com/MetaMask/core/pull/6284))
|
|
@@ -142,7 +149,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
142
149
|
- `checkIsPasswordOutdated`: Check if the password is current device is outdated, i.e. user changed password in another device.
|
|
143
150
|
- `clearState`: Reset the state of the controller to the defaults.
|
|
144
151
|
|
|
145
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.
|
|
152
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.6.0...HEAD
|
|
153
|
+
[2.6.0]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.5.1...@metamask/seedless-onboarding-controller@2.6.0
|
|
146
154
|
[2.5.1]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.5.0...@metamask/seedless-onboarding-controller@2.5.1
|
|
147
155
|
[2.5.0]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.4.0...@metamask/seedless-onboarding-controller@2.5.0
|
|
148
156
|
[2.4.0]: https://github.com/MetaMask/core/compare/@metamask/seedless-onboarding-controller@2.3.0...@metamask/seedless-onboarding-controller@2.4.0
|
|
@@ -12,7 +12,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
12
12
|
};
|
|
13
13
|
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_submitGlobalPassword, _SeedlessOnboardingController_getAccessToken, _SeedlessOnboardingController_setUnlocked, _SeedlessOnboardingController_persistOprfKey, _SeedlessOnboardingController_persistAuthPubKey, _SeedlessOnboardingController_storeKeyringEncryptionKey, _SeedlessOnboardingController_loadKeyringEncryptionKey, _SeedlessOnboardingController_loadSeedlessEncryptionKey, _SeedlessOnboardingController_recoverAuthPubKey, _SeedlessOnboardingController_recoverEncKey, _SeedlessOnboardingController_fetchAllSecretDataFromMetadataStore, _SeedlessOnboardingController_changeEncryptionKey, _SeedlessOnboardingController_encryptAndStoreSecretData, _SeedlessOnboardingController_unlockVaultAndGetVaultData, _SeedlessOnboardingController_decryptAndParseVaultData, _SeedlessOnboardingController_withPersistedSecretMetadataBackupsState, _SeedlessOnboardingController_filterDupesAndUpdateSocialBackupsMetadata, _SeedlessOnboardingController_createNewVaultWithAuthData, _SeedlessOnboardingController_updateVault, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_serializeKeyData, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertIsSRPBackedUpUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_isTokenExpiredError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.SeedlessOnboardingController = exports.
|
|
15
|
+
exports.SeedlessOnboardingController = exports.getInitialSeedlessOnboardingControllerStateWithDefaults = void 0;
|
|
16
16
|
const auth_network_utils_1 = require("@metamask/auth-network-utils");
|
|
17
17
|
const base_controller_1 = require("@metamask/base-controller");
|
|
18
18
|
const toprf_secure_backup_1 = require("@metamask/toprf-secure-backup");
|
|
@@ -30,16 +30,28 @@ const SecretMetadata_1 = require("./SecretMetadata.cjs");
|
|
|
30
30
|
const utils_3 = require("./utils.cjs");
|
|
31
31
|
const log = (0, logger_1.createModuleLogger)(logger_1.projectLogger, constants_1.controllerName);
|
|
32
32
|
/**
|
|
33
|
-
* Get the
|
|
33
|
+
* Get the initial state for the Seedless Onboarding Controller with defaults.
|
|
34
34
|
*
|
|
35
|
-
* @
|
|
35
|
+
* @param overrides - The overrides for the initial state.
|
|
36
|
+
* @returns The initial state for the Seedless Onboarding Controller.
|
|
36
37
|
*/
|
|
37
|
-
function
|
|
38
|
-
|
|
38
|
+
function getInitialSeedlessOnboardingControllerStateWithDefaults(overrides) {
|
|
39
|
+
const initialState = {
|
|
39
40
|
socialBackupsMetadata: [],
|
|
41
|
+
isSeedlessOnboardingUserAuthenticated: false,
|
|
42
|
+
...overrides,
|
|
40
43
|
};
|
|
44
|
+
// Ensure authenticated flag is set correctly.
|
|
45
|
+
try {
|
|
46
|
+
(0, assertions_1.assertIsSeedlessOnboardingUserAuthenticated)(initialState);
|
|
47
|
+
initialState.isSeedlessOnboardingUserAuthenticated = true;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
initialState.isSeedlessOnboardingUserAuthenticated = false;
|
|
51
|
+
}
|
|
52
|
+
return initialState;
|
|
41
53
|
}
|
|
42
|
-
exports.
|
|
54
|
+
exports.getInitialSeedlessOnboardingControllerStateWithDefaults = getInitialSeedlessOnboardingControllerStateWithDefaults;
|
|
43
55
|
/**
|
|
44
56
|
* Seedless Onboarding Controller State Metadata.
|
|
45
57
|
*
|
|
@@ -123,6 +135,10 @@ const seedlessOnboardingMetadata = {
|
|
|
123
135
|
persist: true,
|
|
124
136
|
anonymous: false,
|
|
125
137
|
},
|
|
138
|
+
isSeedlessOnboardingUserAuthenticated: {
|
|
139
|
+
persist: true,
|
|
140
|
+
anonymous: true,
|
|
141
|
+
},
|
|
126
142
|
};
|
|
127
143
|
class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
128
144
|
/**
|
|
@@ -142,10 +158,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
142
158
|
super({
|
|
143
159
|
name: constants_1.controllerName,
|
|
144
160
|
metadata: seedlessOnboardingMetadata,
|
|
145
|
-
state:
|
|
146
|
-
...getDefaultSeedlessOnboardingControllerState(),
|
|
147
|
-
...state,
|
|
148
|
-
},
|
|
161
|
+
state: getInitialSeedlessOnboardingControllerStateWithDefaults(state),
|
|
149
162
|
messenger,
|
|
150
163
|
});
|
|
151
164
|
_SeedlessOnboardingController_instances.add(this);
|
|
@@ -237,6 +250,8 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
237
250
|
state.userId = userId;
|
|
238
251
|
state.authConnection = authConnection;
|
|
239
252
|
state.socialLoginEmail = socialLoginEmail;
|
|
253
|
+
state.metadataAccessToken = metadataAccessToken;
|
|
254
|
+
state.accessToken = accessToken;
|
|
240
255
|
if (refreshToken) {
|
|
241
256
|
state.refreshToken = refreshToken;
|
|
242
257
|
}
|
|
@@ -244,12 +259,10 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
244
259
|
// Temporarily store revoke token in state for later vault creation
|
|
245
260
|
state.revokeToken = revokeToken;
|
|
246
261
|
}
|
|
247
|
-
if
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
state.metadataAccessToken = metadataAccessToken;
|
|
252
|
-
}
|
|
262
|
+
// we will check if the controller state is properly set with the authenticated user info
|
|
263
|
+
// before setting the isSeedlessOnboardingUserAuthenticated to true
|
|
264
|
+
(0, assertions_1.assertIsSeedlessOnboardingUserAuthenticated)(state);
|
|
265
|
+
state.isSeedlessOnboardingUserAuthenticated = true;
|
|
253
266
|
});
|
|
254
267
|
return authenticationResult;
|
|
255
268
|
}
|
|
@@ -616,7 +629,7 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
616
629
|
* Clears the current state of the SeedlessOnboardingController.
|
|
617
630
|
*/
|
|
618
631
|
clearState() {
|
|
619
|
-
const defaultState =
|
|
632
|
+
const defaultState = getInitialSeedlessOnboardingControllerStateWithDefaults();
|
|
620
633
|
this.update(() => {
|
|
621
634
|
return defaultState;
|
|
622
635
|
});
|
|
@@ -1322,27 +1335,14 @@ async function _SeedlessOnboardingController_withVaultLock(callback) {
|
|
|
1322
1335
|
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.ControllerLocked);
|
|
1323
1336
|
}
|
|
1324
1337
|
}, _SeedlessOnboardingController_assertIsAuthenticatedUser = function _SeedlessOnboardingController_assertIsAuthenticatedUser(value) {
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
!('authConnectionId' in value) ||
|
|
1328
|
-
typeof value.authConnectionId !== 'string' ||
|
|
1329
|
-
!('userId' in value) ||
|
|
1330
|
-
typeof value.userId !== 'string') {
|
|
1331
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.MissingAuthUserInfo);
|
|
1332
|
-
}
|
|
1333
|
-
if (!('nodeAuthTokens' in value) ||
|
|
1334
|
-
typeof value.nodeAuthTokens !== 'object' ||
|
|
1335
|
-
!Array.isArray(value.nodeAuthTokens) ||
|
|
1336
|
-
value.nodeAuthTokens.length < 3 // At least 3 auth tokens are required for Threshold OPRF service
|
|
1337
|
-
) {
|
|
1338
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InsufficientAuthToken);
|
|
1339
|
-
}
|
|
1340
|
-
if (!('refreshToken' in value) || typeof value.refreshToken !== 'string') {
|
|
1341
|
-
throw new Error(constants_1.SeedlessOnboardingControllerErrorMessage.InvalidRefreshToken);
|
|
1338
|
+
try {
|
|
1339
|
+
(0, assertions_1.assertIsSeedlessOnboardingUserAuthenticated)(value);
|
|
1342
1340
|
}
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1341
|
+
catch (error) {
|
|
1342
|
+
this.update((state) => {
|
|
1343
|
+
state.isSeedlessOnboardingUserAuthenticated = false;
|
|
1344
|
+
});
|
|
1345
|
+
throw error;
|
|
1346
1346
|
}
|
|
1347
1347
|
}, _SeedlessOnboardingController_assertIsSRPBackedUpUser = function _SeedlessOnboardingController_assertIsSRPBackedUpUser(value) {
|
|
1348
1348
|
if (!this.state.authPubKey) {
|