Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PM-3726] Force migration of legacy user's encryption key #6195

Merged
merged 14 commits into from
Sep 20, 2023

Conversation

jlf0dev
Copy link
Member

@jlf0dev jlf0dev commented Sep 5, 2023

Type of change

- [x] Bug fix
- [ ] New feature development
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other

Objective

Legacy encryption users have been unable to login following the key migration. Although we included code to account for legacy accounts within the crypto service, we made the assumption during the login process that a user key should always be available.

The PR detects these accounts and creates a new migration component for them. This new migration component is only available on web currently, so other clients will have their login process short circuited with an error directing them to migrate on web.

I have also removed references to the old UpdateKeyComponent and the card on the vault page. The migration is now required.

Code changes

  • file.ext: Description of what was changed and why

Screenshots

image
image
image

Before you submit

  • Please add unit tests where it makes sense to do so (encouraged but not required)
  • If this change requires a documentation update - notify the documentation team
  • If this change has particular deployment requirements - notify the DevOps team
  • Ensure that all UI additions follow WCAG AA requirements

@jlf0dev jlf0dev requested review from a team as code owners September 5, 2023 21:49
@github-actions github-actions bot added the needs-qa Marks a PR as requiring QA approval label Sep 5, 2023
Copy link
Contributor

@ike-kottlowski ike-kottlowski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall. I wonder though, if we have a plan to remove this code after all users have been migrated? This code feels almost like a "one off" that might add bloat to the code base in the long run. Just a thought.

apps/cli/src/auth/commands/login.command.ts Show resolved Hide resolved
@bitwarden-bot
Copy link

bitwarden-bot commented Sep 6, 2023

Logo
Checkmarx One – Scan Summary & Details1e247af9-d23b-447a-9ebc-c5412343637e

New Issues

Severity Issue Source File / Package Checkmarx Insight
LOW Use_Of_Hardcoded_Password /libs/common/src/auth/login-strategies/login.strategy.spec.ts: 92 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/auth/login-strategies/login.strategy.spec.ts: 91 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/auth/login-strategies/login.strategy.spec.ts: 92 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/auth/login-strategies/login.strategy.spec.ts: 91 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.service.spec.ts: 80 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.service.spec.ts: 246 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/web/src/app/auth/migrate-encryption/migrate-legacy-encryption.service.spec.ts: 101 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 97 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 97 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 243 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 126 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 126 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 119 Attack Vector
LOW Use_Of_Hardcoded_Password /libs/common/src/tools/send/services/send-api.service.ts: 32 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/content/notification-bar.ts: 542 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/content/notification-bar.ts: 542 Attack Vector
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/content/notification-bar.ts: 536 Attack Vector

Fixed Issues

Severity Issue Source File / Package
MEDIUM Client_Privacy_Violation /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 46
MEDIUM Client_Privacy_Violation /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 45
MEDIUM Client_Privacy_Violation /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 44
MEDIUM Client_Privacy_Violation /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 52
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 422
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/services/collect-autofill-content.service.spec.ts: 487
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 32
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 28
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 27
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 26
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 25
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 24
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 23
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 22
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 21
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 20
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 19
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 18
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 17
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 16
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 13
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 36
LOW Use_Of_Hardcoded_Password /apps/browser/src/autofill/jest/autofill-mocks.ts: 33
LOW

More results are available on AST platform

Copy link
Contributor

@JaredSnider-Bitwarden JaredSnider-Bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work on this!

Several clarifying questions below + tests are failing at the moment.

Copy link
Contributor

@JaredSnider-Bitwarden JaredSnider-Bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

- also remove card in vault since legacy users can't login
@jlf0dev jlf0dev changed the title [PM-3726] migrate legacy user's encryption key [PM-3726] Force migration of legacy user's encryption key Sep 6, 2023
justindbaur
justindbaur previously approved these changes Sep 6, 2023
Copy link
Member

@justindbaur justindbaur left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Platform changes look good, just one question for @djsmith85's expertise on locale file stuff.

@@ -475,8 +475,8 @@
"maxFileSize": {
"message": "Maximum file size is 500 MB."
},
"updateKey": {
"message": "You cannot use this feature until you update your encryption key."
"encryptionKeyMigrationRequired": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@djsmith85 What's the rule on updating locale keys again? Should we avoid changing the key or is this correct when we also update the message?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@justindbaur Thanks for the ping.
If the message is changed then the key need to be changed for the translations to be removed in Crowdin. Additionally we need to check if the previous key was used elsewhere/possibly within a different context and also update all usages within the clients.

gbubemismith
gbubemismith previously approved these changes Sep 6, 2023
Copy link
Member

@gbubemismith gbubemismith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good from the vault's perspective

cagonzalezcs
cagonzalezcs previously approved these changes Sep 6, 2023
Copy link
Contributor

@cagonzalezcs cagonzalezcs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks really solid overall, just presented a couple of non-blocking nits.

This doesn't touch autofill, but let me know if you'd like a re-review/approval at some point.

Comment on lines +20 to +27
<bit-label>{{ "masterPass" | i18n }}</bit-label>
<input
id="masterPassword"
bitInput
type="password"
formControlName="masterPassword"
appAutofocus
/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accessibility Nit - Does this <bit-label> component directly relate to the subsequent <input> label somehow? Ideally the label for the form would have a for="<id> value for each input field (ie. for="masterPassword in this case)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, added.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Based on this comment from @shane-melton, the bit-label does not need/support a for-attribute. The bit-form-field takes care of it

Comment on lines 108 to 115
const allowedStatuses = [
EmergencyAccessStatusType.Confirmed,
EmergencyAccessStatusType.RecoveryInitiated,
EmergencyAccessStatusType.RecoveryApproved,
];

const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.includes(d.status));

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very minor nit here, but in cases where I'm attempting to identify if a value exists within an array of values, using a Set data type is usually more performant.

Suggested change
const allowedStatuses = [
EmergencyAccessStatusType.Confirmed,
EmergencyAccessStatusType.RecoveryInitiated,
EmergencyAccessStatusType.RecoveryApproved,
];
const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.includes(d.status));
const allowedStatuses = new Set([
EmergencyAccessStatusType.Confirmed,
EmergencyAccessStatusType.RecoveryInitiated,
EmergencyAccessStatusType.RecoveryApproved,
]);
const filteredAccesses = emergencyAccess.data.filter((d) => allowedStatuses.has(d.status));

.has() identifies whether a value exists in O(1) runtime, while .includes() identifies values in O(n).

Not a blocking request, just a consideration.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! TIL

Copy link
Contributor

@JaredSnider-Bitwarden JaredSnider-Bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New changes look good to me! Nice work 👍

>{{ "learnMore" | i18n }}</a
>
</p>
<app-callout type="warning">{{ "updateEncryptionKeyWarning" | i18n }}</app-callout>
Copy link
Member

@Hinton Hinton Sep 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be using the bit callout component instead of the deprecated app-callout.

@jlf0dev
Copy link
Member Author

jlf0dev commented Sep 7, 2023

I suspect we want to add the checks to the AuthGuard, as well to ensure the users can't bypass the migrate page.

I wanted to avoid running this code for every route so I've only put it on the lock guard and a direct navigation on the login component. Legacy users will be sent to the lock guard anyway if they try to get around the migration.

I'm a bit concerned what the impact will be of the removed userKey checks everywhere.

The direction we're headed is that you shouldn't get past auth without having a User Key. Regardless, the Auth guard checks for this and redirects to the lock component if the User Key isn't found.

Hinton
Hinton previously approved these changes Sep 7, 2023
Copy link
Member

@Hinton Hinton left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not going to block this. Please ensure this service gets refactored before anyone else uses it! I also think the migration service knows far to much about HOW to encrypt things, which should be internal concerns of those domains.

@ike-kottlowski ike-kottlowski removed their request for review September 7, 2023 17:21
Copy link
Contributor

@JaredSnider-Bitwarden JaredSnider-Bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! One small tweak

djsmith85
djsmith85 previously approved these changes Sep 18, 2023
Copy link
Contributor

@djsmith85 djsmith85 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving as the changes I requested (messages and bit-label) have been addressed.

Copy link
Contributor

@JaredSnider-Bitwarden JaredSnider-Bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@djsmith85 djsmith85 linked an issue Sep 19, 2023 that may be closed by this pull request
1 task
@@ -141,10 +142,18 @@ export class VaultTimeoutService implements VaultTimeoutServiceAbstraction {
}

private async migrateKeyForNeverLockIfNeeded(): Promise<void> {
// Web can't set vault timeout to never
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically we can in dev mode.

@trmartin4 trmartin4 removed the needs-qa Marks a PR as requiring QA approval label Sep 19, 2023
@trmartin4 trmartin4 merged commit 8c06508 into master Sep 20, 2023
@trmartin4 trmartin4 deleted the auth/pm-3726/migrate-legacy-users branch September 20, 2023 19:57
trmartin4 pushed a commit that referenced this pull request Sep 21, 2023
* [PM-3726] migrate legacy user's encryption key

* [PM-3726] add 2fa support and pr feedback

* [PM-3726] revert launch.json & webpack.config changes

* [PM-3726] remove update key component
- also remove card in vault since legacy users can't login

* [PM-3726] Fix i18n & PR feedback

* [PM-3726] make standalone component

* [PM-3726] linter

* [PM-3726] missing await

* [PM-3726] logout legacy users with vault timeout to never

* [PM-3726] add await

* [PM-3726] skip auto key migration for legacy users

* [PM-3726] pr feedback

* [PM-3726] move check for web into migrate method

---------

Co-authored-by: Jared Snider <[email protected]>
(cherry picked from commit 8c06508)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Error: No encrypted user key found
10 participants