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 @@
-
-