@metamask-previews/seedless-onboarding-controller 7.1.0-preview-6060063 → 7.1.0-preview-dcbbb24
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 +6 -0
- package/dist/SeedlessOnboardingController.cjs +38 -13
- package/dist/SeedlessOnboardingController.cjs.map +1 -1
- package/dist/SeedlessOnboardingController.d.cts +79 -2
- package/dist/SeedlessOnboardingController.d.cts.map +1 -1
- package/dist/SeedlessOnboardingController.d.mts +79 -2
- package/dist/SeedlessOnboardingController.d.mts.map +1 -1
- package/dist/SeedlessOnboardingController.mjs +38 -13
- package/dist/SeedlessOnboardingController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -66
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -66
- 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,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Added new public method, `getAccessToken`. ([#7800](https://github.com/MetaMask/core/pull/7800))
|
|
13
|
+
- Clients can use this method to get `accessToken` from the controller, instead of directly accessing from the state.
|
|
14
|
+
- This method also adds refresh token mechanism when `accessToken` is expired, hence preventing expired token usage in the clients.
|
|
15
|
+
|
|
10
16
|
### Changed
|
|
11
17
|
|
|
12
18
|
- Update StateMetadata's `includeInStateLogs` property. ([#7750](https://github.com/MetaMask/core/pull/7750))
|
|
@@ -10,11 +10,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _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_getAccessTokenAndRevokeToken, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isAuthTokenError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh;
|
|
13
|
+
var _SeedlessOnboardingController_instances, _SeedlessOnboardingController_vaultEncryptor, _SeedlessOnboardingController_controllerOperationMutex, _SeedlessOnboardingController_vaultOperationMutex, _SeedlessOnboardingController_refreshJWTToken, _SeedlessOnboardingController_revokeRefreshToken, _SeedlessOnboardingController_renewRefreshToken, _SeedlessOnboardingController_passwordOutdatedCacheTTL, _SeedlessOnboardingController_isUnlocked, _SeedlessOnboardingController_cachedDecryptedVaultData, _SeedlessOnboardingController_submitGlobalPassword, _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_getAccessTokenAndRevokeToken, _SeedlessOnboardingController_withControllerLock, _SeedlessOnboardingController_withVaultLock, _SeedlessOnboardingController_parseVaultData, _SeedlessOnboardingController_assertIsUnlocked, _SeedlessOnboardingController_assertIsAuthenticatedUser, _SeedlessOnboardingController_assertPasswordInSync, _SeedlessOnboardingController_resetPasswordOutdatedCache, _SeedlessOnboardingController_addRefreshTokenToRevokeList, _SeedlessOnboardingController_isAuthTokenError, _SeedlessOnboardingController_isMaxKeyChainLengthError, _SeedlessOnboardingController_executeWithTokenRefresh, _SeedlessOnboardingController_checkTokensExpired;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
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
|
+
const messenger_1 = require("@metamask/messenger");
|
|
18
19
|
const toprf_secure_backup_1 = require("@metamask/toprf-secure-backup");
|
|
19
20
|
const utils_1 = require("@metamask/utils");
|
|
20
21
|
const aes_1 = require("@noble/ciphers/aes");
|
|
@@ -858,6 +859,28 @@ class SeedlessOnboardingController extends base_controller_1.BaseController {
|
|
|
858
859
|
}
|
|
859
860
|
});
|
|
860
861
|
}
|
|
862
|
+
/**
|
|
863
|
+
* Get the access token from the state.
|
|
864
|
+
*
|
|
865
|
+
* If the tokens are expired, the method will refresh them and return the new access token.
|
|
866
|
+
*
|
|
867
|
+
* @returns The access token.
|
|
868
|
+
*/
|
|
869
|
+
async getAccessToken() {
|
|
870
|
+
return __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_withControllerLock).call(this, async () => {
|
|
871
|
+
try {
|
|
872
|
+
// if the tokens are expired, refresh them and return the access token
|
|
873
|
+
const accessToken = await __classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_executeWithTokenRefresh).call(this, async () => {
|
|
874
|
+
return this.state.accessToken;
|
|
875
|
+
}, 'getAccessToken');
|
|
876
|
+
return accessToken;
|
|
877
|
+
}
|
|
878
|
+
catch (error) {
|
|
879
|
+
log('Error getting access token', error);
|
|
880
|
+
return undefined;
|
|
881
|
+
}
|
|
882
|
+
});
|
|
883
|
+
}
|
|
861
884
|
/**
|
|
862
885
|
* Check if the current node auth token is expired.
|
|
863
886
|
*
|
|
@@ -1537,18 +1560,7 @@ async function _SeedlessOnboardingController_assertPasswordInSync(options) {
|
|
|
1537
1560
|
*/
|
|
1538
1561
|
async function _SeedlessOnboardingController_executeWithTokenRefresh(operation, operationName) {
|
|
1539
1562
|
try {
|
|
1540
|
-
|
|
1541
|
-
const isNodeAuthTokenExpired = this.checkNodeAuthTokenExpired();
|
|
1542
|
-
const isMetadataAccessTokenExpired = this.checkMetadataAccessTokenExpired();
|
|
1543
|
-
// access token is only accessible when the vault is unlocked
|
|
1544
|
-
// so skip the check if the vault is locked
|
|
1545
|
-
let isAccessTokenExpired = false;
|
|
1546
|
-
if (__classPrivateFieldGet(this, _SeedlessOnboardingController_isUnlocked, "f")) {
|
|
1547
|
-
isAccessTokenExpired = this.checkAccessTokenExpired();
|
|
1548
|
-
}
|
|
1549
|
-
if (isNodeAuthTokenExpired ||
|
|
1550
|
-
isMetadataAccessTokenExpired ||
|
|
1551
|
-
isAccessTokenExpired) {
|
|
1563
|
+
if (__classPrivateFieldGet(this, _SeedlessOnboardingController_instances, "m", _SeedlessOnboardingController_checkTokensExpired).call(this)) {
|
|
1552
1564
|
log(`JWT token expired during ${operationName}, attempting to refresh tokens`, 'node auth token exp check');
|
|
1553
1565
|
await this.refreshAuthTokens();
|
|
1554
1566
|
}
|
|
@@ -1574,6 +1586,19 @@ async function _SeedlessOnboardingController_executeWithTokenRefresh(operation,
|
|
|
1574
1586
|
throw error;
|
|
1575
1587
|
}
|
|
1576
1588
|
}
|
|
1589
|
+
}, _SeedlessOnboardingController_checkTokensExpired = function _SeedlessOnboardingController_checkTokensExpired() {
|
|
1590
|
+
// proactively check for expired tokens and refresh them if needed
|
|
1591
|
+
const isNodeAuthTokenExpired = this.checkNodeAuthTokenExpired();
|
|
1592
|
+
const isMetadataAccessTokenExpired = this.checkMetadataAccessTokenExpired();
|
|
1593
|
+
// access token is only accessible when the vault is unlocked
|
|
1594
|
+
// so skip the check if the vault is locked
|
|
1595
|
+
let isAccessTokenExpired = false;
|
|
1596
|
+
if (__classPrivateFieldGet(this, _SeedlessOnboardingController_isUnlocked, "f")) {
|
|
1597
|
+
isAccessTokenExpired = this.checkAccessTokenExpired();
|
|
1598
|
+
}
|
|
1599
|
+
return (isNodeAuthTokenExpired ||
|
|
1600
|
+
isMetadataAccessTokenExpired ||
|
|
1601
|
+
isAccessTokenExpired);
|
|
1577
1602
|
};
|
|
1578
1603
|
/**
|
|
1579
1604
|
* Assert that the provided password is a valid non-empty string.
|