From 241eb8bed5b27efc8271be3eba7a58faf8e27cff Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Wed, 20 May 2020 15:04:33 +0200 Subject: [PATCH] Implements #1182 By adding a button to forget the saved password --- .../ui/controls/FontAwesome5Icon.java | 1 + .../MasterkeyOptionsController.java | 31 ++++++++++++++++++- .../fxml/vault_options_masterkey.fxml | 20 +++++++----- .../main/resources/i18n/strings.properties | 1 + 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java b/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java index 5ebe94068..7423fb899 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java +++ b/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java @@ -26,6 +26,7 @@ public enum FontAwesome5Icon { INFO_CIRCLE("\uF05A"), // KEY("\uF084"), // LINK("\uF0C1"), // + UNLINK("\uf127"), LOCK("\uF023"), // LOCK_OPEN("\uF3C1"), // MAGIC("\uF0D0"), // diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java index d03ac4e31..6ec7576dd 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java @@ -1,13 +1,19 @@ package org.cryptomator.ui.vaultoptions; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.BooleanExpression; +import javafx.beans.property.SimpleBooleanProperty; import javafx.fxml.FXML; import javafx.stage.Stage; import org.cryptomator.common.vaults.Vault; +import org.cryptomator.keychain.KeychainAccessException; +import org.cryptomator.keychain.KeychainManager; import org.cryptomator.ui.changepassword.ChangePasswordComponent; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import javax.inject.Inject; +import java.util.Optional; @VaultOptionsScoped public class MasterkeyOptionsController implements FxController { @@ -16,13 +22,20 @@ public class MasterkeyOptionsController implements FxController { private final Stage window; private final ChangePasswordComponent.Builder changePasswordWindow; private final RecoveryKeyComponent.Builder recoveryKeyWindow; + private final Optional keychainManagerOptional; + private final BooleanExpression passwordSaved; + @Inject - MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow) { + MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow, Optional keychainManagerOptional) { this.vault = vault; this.window = window; this.changePasswordWindow = changePasswordWindow; this.recoveryKeyWindow = recoveryKeyWindow; + this.keychainManagerOptional = keychainManagerOptional; + if (keychainManagerOptional.isPresent()) { + this.passwordSaved = Bindings.createBooleanBinding(this::isPasswordSaved, keychainManagerOptional.get().getPassphraseStoredProperty(vault.getId())); + } else this.passwordSaved = new SimpleBooleanProperty(false); } @FXML @@ -39,4 +52,20 @@ public class MasterkeyOptionsController implements FxController { public void showRecoverVaultDialogue() { recoveryKeyWindow.vault(vault).owner(window).build().showRecoveryKeyRecoverWindow(); } + + @FXML + public void removePasswordFromKeychain() throws KeychainAccessException { + keychainManagerOptional.get().deletePassphrase(vault.getId()); + window.close(); + } + + public BooleanExpression passwordSavedProperty() { + return passwordSaved; + } + + public boolean isPasswordSaved() { + if (keychainManagerOptional.isPresent() && vault != null) { + return keychainManagerOptional.get().getPassphraseStoredProperty(vault.getId()).get(); + } else return false; + } } diff --git a/main/ui/src/main/resources/fxml/vault_options_masterkey.fxml b/main/ui/src/main/resources/fxml/vault_options_masterkey.fxml index 0f44ae0da..52a8b00fa 100644 --- a/main/ui/src/main/resources/fxml/vault_options_masterkey.fxml +++ b/main/ui/src/main/resources/fxml/vault_options_masterkey.fxml @@ -16,14 +16,20 @@ - - + + + + - +