Browse Source

Reintegrate forget password dialog into application

Armin Schrenk 2 năm trước cách đây
mục cha
commit
7edd1dfa40

+ 3 - 1
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();
 	}

+ 7 - 9
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() {

+ 2 - 1
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

+ 1 - 1
src/main/resources/fxml/forget_password.fxml

@@ -29,7 +29,7 @@
 					<Insets topRightBottomLeft="6"/>
 				</padding>
 				<Circle styleClass="glyph-icon-primary" radius="24"/>
-				<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
+				<FontAwesome5IconView styleClass="glyph-icon-white" glyph="QUESTION" glyphSize="24"/>
 			</StackPane>
 		</Group>
 		<VBox HBox.hgrow="ALWAYS">

+ 2 - 2
src/main/resources/fxml/vault_options_masterkey.fxml

@@ -21,7 +21,7 @@
 					<FontAwesome5IconView glyph="KEY"/>
 				</graphic>
 			</Button>
-			<Button text="%vaultOptions.masterkey.forgetSavedPasswordBtn" onAction="#removePasswordFromKeychain" contentDisplay="LEFT" maxWidth="Infinity" visible="${controller.passwordSaved}"
+			<Button text="%vaultOptions.masterkey.forgetSavedPasswordBtn" onAction="#showForgetPasswordDialog" contentDisplay="LEFT" maxWidth="Infinity" visible="${controller.passwordSaved}"
 					managed="${controller.passwordSaved}">
 				<graphic>
 					<FontAwesome5IconView glyph="UNLINK"/>
@@ -36,7 +36,7 @@
 					<FontAwesome5IconView glyph="EYE"/>
 				</graphic>
 			</Button>
-			<Button text="%vaultOptions.masterkey.recoverPasswordBtn" onAction="#showRecoverVaultDialogue" contentDisplay="LEFT" maxWidth="Infinity">
+			<Button text="%vaultOptions.masterkey.recoverPasswordBtn" onAction="#showRecoverVaultDialog" contentDisplay="LEFT" maxWidth="Infinity">
 				<graphic>
 					<FontAwesome5IconView glyph="SYNC"/>
 				</graphic>

+ 1 - 1
src/main/resources/i18n/strings.properties

@@ -356,7 +356,7 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Pick an empty directory
 ## Master Key
 vaultOptions.masterkey=Password
 vaultOptions.masterkey.changePasswordBtn=Change Password
-vaultOptions.masterkey.forgetSavedPasswordBtn=Forget Saved Password
+vaultOptions.masterkey.forgetSavedPasswordBtn=Forget Saved Password
 vaultOptions.masterkey.recoveryKeyExplanation=A recovery key is your only means to restore access to a vault if you lose your password.
 vaultOptions.masterkey.showRecoveryKeyBtn=Display Recovery Key
 vaultOptions.masterkey.recoverPasswordBtn=Recover Password