From 7edd1dfa40fb8cfa232cff676eb0a6518a9dff09 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 29 Jun 2022 11:10:15 +0200 Subject: [PATCH] Reintegrate forget password dialog into application --- .../forgetPassword/ForgetPasswordController.java | 4 +++- .../vaultoptions/MasterkeyOptionsController.java | 16 +++++++--------- .../ui/vaultoptions/VaultOptionsModule.java | 3 ++- src/main/resources/fxml/forget_password.fxml | 2 +- .../resources/fxml/vault_options_masterkey.fxml | 4 ++-- src/main/resources/i18n/strings.properties | 2 +- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java index 81d28f682..8cd43ae22 100644 --- a/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java +++ b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java @@ -43,9 +43,11 @@ public class ForgetPasswordController implements FxController { LOG.debug("Forgot password for vault {}.", vault.getDisplayName()); confirmedResult.setValue(true); } catch (KeychainAccessException e) { - LOG.error("Failed to remove entry from system keychain.", e); + LOG.error("Failed to delete passphrase from system keychain.", e); confirmedResult.setValue(false); } + } else { + LOG.warn("Keychain not supported. Doing nothing."); } window.close(); } diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java index fb9d6b711..a9bc88cf7 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java @@ -5,6 +5,7 @@ import org.cryptomator.common.vaults.Vault; import org.cryptomator.integrations.keychain.KeychainAccessException; import org.cryptomator.ui.changepassword.ChangePasswordComponent; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.forgetPassword.ForgetPasswordComponent; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,16 +26,18 @@ public class MasterkeyOptionsController implements FxController { private final Stage window; private final ChangePasswordComponent.Builder changePasswordWindow; private final RecoveryKeyComponent.Builder recoveryKeyWindow; + private final ForgetPasswordComponent.Builder forgetPasswordWindow; private final KeychainManager keychain; private final BooleanExpression passwordSaved; @Inject - MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow, KeychainManager keychain) { + MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow, ForgetPasswordComponent.Builder forgetPasswordWindow, KeychainManager keychain) { this.vault = vault; this.window = window; this.changePasswordWindow = changePasswordWindow; this.recoveryKeyWindow = recoveryKeyWindow; + this.forgetPasswordWindow = forgetPasswordWindow; this.keychain = keychain; if (keychain.isSupported() && !keychain.isLocked()) { this.passwordSaved = Bindings.createBooleanBinding(this::isPasswordSaved, keychain.getPassphraseStoredProperty(vault.getId())); @@ -54,19 +57,14 @@ public class MasterkeyOptionsController implements FxController { } @FXML - public void showRecoverVaultDialogue() { + public void showRecoverVaultDialog() { recoveryKeyWindow.vault(vault).owner(window).build().showRecoveryKeyRecoverWindow(); } @FXML - public void removePasswordFromKeychain() { + public void showForgetPasswordDialog() { assert keychain.isSupported(); - try { - keychain.deletePassphrase(vault.getId()); - } catch (KeychainAccessException e) { - LOG.error("Failed to delete passphrase from system keychain.", e); - } - window.close(); + forgetPasswordWindow.vault(vault).owner(window).build().showForgetPassword(); } public BooleanExpression passwordSavedProperty() { diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java index e6966da64..a9014cc54 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java @@ -13,6 +13,7 @@ import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlLoaderFactory; import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.common.StageFactory; +import org.cryptomator.ui.forgetPassword.ForgetPasswordComponent; import org.cryptomator.ui.fxapp.PrimaryStage; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; @@ -25,7 +26,7 @@ import javafx.stage.Stage; import java.util.Map; import java.util.ResourceBundle; -@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class}) +@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, ForgetPasswordComponent.class}) abstract class VaultOptionsModule { @Provides diff --git a/src/main/resources/fxml/forget_password.fxml b/src/main/resources/fxml/forget_password.fxml index d790e6629..287ac8a53 100644 --- a/src/main/resources/fxml/forget_password.fxml +++ b/src/main/resources/fxml/forget_password.fxml @@ -29,7 +29,7 @@ - + diff --git a/src/main/resources/fxml/vault_options_masterkey.fxml b/src/main/resources/fxml/vault_options_masterkey.fxml index ad7097924..a06244178 100644 --- a/src/main/resources/fxml/vault_options_masterkey.fxml +++ b/src/main/resources/fxml/vault_options_masterkey.fxml @@ -21,7 +21,7 @@ - -