You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
final newUser =awaitUser.fromEmail(newEmailAddress);
348
+
//TODO: what is the below on about? maybe that we need to make sure that the vault is locked when we do this operation, thus ensuring that leaving the user signed in due to network faults, manipulation, etc. doesn't leave them with access to their vault data. but what about taking exports? shouldn't that be allowed? probably yes, as long as they are currently verified and can thus log in normally. then cliking the button to change email address will lock the vault and kick them to the screen that ultimately sends their request to this function.
350
349
//TODO: verify that we can only get here if Vault is already locked. Throw exception earlier if we can detect that state?
@@ -356,7 +355,12 @@ class AccountCubit extends Cubit<AccountState> {
356
355
l.w('Unable to changeEmailAddress due to a 403.');
357
356
emit(AccountEmailChangeRequested(user,
358
357
'Due to an authentication problem, we were unable to change your email address. Probably it has been too long since you last signed in with your previous email address. We have left you signed in using your old email address but you may find that you are signed out soon. Please sign out and then sign in again with your previous email address and try again when you have enough time to complete the operation within 10 minutes.'));
358
+
} onFormatException {
359
+
// Local validation
360
+
l.i('Unable to changeEmailAddress due to FormatException.');
361
+
emit(AccountEmailChangeRequested(user, 'Please enter the correct password for your existing Kee Vault account.'));
359
362
} onKeeInvalidRequestException {
363
+
// Local validation should mean this is unlikely to happen outside of malicious acts
360
364
l.i('Unable to changeEmailAddress due to 400 response.');
361
365
emit(AccountEmailChangeRequested(user,
362
366
'Please double check that you have entered the correct password for your existing Kee Vault account. Also check that you have entered a valid email address of no more than 70 characters.'));
"Your email address has a crucial role in the advanced security protections Kee Vault offers. Changing it securely is a far more complex task than for most of the places you might wish to change it. We are happy to finally offer this feature to you but please read the information carefully and don\'t proceed when you are in a rush."),
"If you make a mistake, you should be able to regain access to your Vault but in some cases you may need to create a new Kee Vault subscription and import from your previously exported KDBX file - this can result in additional hassle and costs since your current subscription would not automatically end."),
"Your password will remain the same throughout the process. If you want to change that too, we first recommend signing in on multiple devices using your new email address and waiting at least an hour."),
"You have no password entries yet. Create one using the + button below. If you have passwords already stored in the standard KDBX (KeePass) format you can import them."),
460
+
"noLongerHaveAccessToUnverifiedEmail":
461
+
MessageLookupByLibrary.simpleMessage(
462
+
"No longer have access to your email address?"),
430
463
"notSignedIn":MessageLookupByLibrary.simpleMessage("Not signed in"),
Copy file name to clipboardExpand all lines: lib/l10n/intl_en.arb
+18-1Lines changed: 18 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -377,5 +377,22 @@
377
377
"resendVerification": "Resend the verification link",
378
378
"signInAgainWhenVerified": "When your email address is successfully verified you can click the button below to continue your sign-in.",
379
379
"expiredWhileSignedIn": "Your subscription has just expired. Please click \"Sign out\" from the main menu below, then sign-in and follow the instructions. Your data is still available at the moment so don't panic.",
380
-
"openInBrowser": "Open in browser"
380
+
"openInBrowser": "Open in browser",
381
+
"continueSigningIn": "Continue signing in",
382
+
"noLongerHaveAccessToUnverifiedEmail": "No longer have access to your email address?",
383
+
"changeEmail": "Change email address",
384
+
"changeEmailInfo1": "Your email address has a crucial role in the advanced security protections Kee Vault offers. Changing it securely is a far more complex task than for most of the places you might wish to change it. We are happy to finally offer this feature to you but please read the information carefully and don't proceed when you are in a rush.",
385
+
"changeEmailInfo2": "Your new email address will:",
386
+
"changeEmailInfo2a": "become your new sign-in ID",
387
+
"changeEmailInfo2b": "need to be verified to confirm it belongs to you",
388
+
"changeEmailInfo3": "We recommend that you:",
389
+
"changeEmailInfo3a": "1) Click the Cancel button below, sign in to Kee Vault again, Export your Vault to a KDBX file and store it somewhere safe as a backup.",
390
+
"changeEmailInfo3b": "2) Double check you enter the correct email address - you will need to type it exactly to sign in to your account in a moment.",
391
+
"changeEmailInfo3c": "3) Copy/paste what you have entered in the email address box and store somewhere like a note on your phone.",
392
+
"changeEmailInfo4": "If you make a mistake, you should be able to regain access to your Vault but in some cases you may need to create a new Kee Vault subscription and import from your previously exported KDBX file - this can result in additional hassle and costs since your current subscription would not automatically end.",
393
+
"changeEmailInfo5": "Your password will remain the same throughout the process. If you want to change that too, we first recommend signing in on multiple devices using your new email address and waiting at least an hour.",
394
+
"changeEmailInfo6": "I have read the above warnings, mitigated the risks and wish to continue",
Future<User> createAccount(User user, int marketingEmailStatus, int subscriptionSource) async {
108
109
final hexSalt =generateSalt();
109
110
user.salt =hex2base64(hexSalt);
110
-
//TODO: Verify that changing from user.id to user.emailHashed has expected effect (nothing since we just defaulted the id to emailHashed anyway and the server will tell us the final random user ID after registration succeeds)
111
111
final privateKey =derivePrivateKey(hexSalt, user.emailHashed!, user.passKey!);
112
112
final verifier =deriveVerifier(privateKey);
113
113
final response =await _service.postRequest<String>('register', {
@@ -207,13 +207,22 @@ class UserService {
207
207
208
208
// We make no changes to the User model since we will sign the user out and ask them to
209
209
// sign in again, partly so that we can ensure they have verified their new email address.
0 commit comments