From 2a5bce2c5c340e57b3e32c9fe9ee80ce72bb8ddb Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Tue, 27 Jan 2026 17:42:04 +0100 Subject: [PATCH 1/5] disable password tab when masterkey.file is missing --- .../MasterkeyOptionsController.java | 27 ++++++++++++++- .../fxml/vault_options_masterkey.fxml | 34 +++++++++++++++++-- src/main/resources/i18n/strings.properties | 2 ++ 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java index 67ae2f42d..5303b3ae8 100644 --- a/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java +++ b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java @@ -1,5 +1,6 @@ package org.cryptomator.ui.vaultoptions; +import dagger.Lazy; import org.cryptomator.common.keychain.KeychainManager; import org.cryptomator.common.recovery.RecoveryActionType; import org.cryptomator.common.vaults.Vault; @@ -9,28 +10,38 @@ import org.cryptomator.ui.forgetpassword.ForgetPasswordComponent; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import javax.inject.Inject; +import javafx.application.Application; +import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.stage.Stage; +import java.nio.file.Files; + +import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; @VaultOptionsScoped public class MasterkeyOptionsController implements FxController { + private static final String DOCS_URL = "https://docs.cryptomator.org/desktop/"; //TODO: replace with correct docs link + private final Vault vault; + private final Lazy application; private final Stage window; private final ChangePasswordComponent.Builder changePasswordWindow; private final RecoveryKeyComponent.Factory recoveryKeyWindow; private final ForgetPasswordComponent.Builder forgetPasswordWindow; private final KeychainManager keychain; private final ObservableValue passwordSaved; + private final BooleanProperty masterkeyFileAvailable; @Inject - MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Factory recoveryKeyWindow, ForgetPasswordComponent.Builder forgetPasswordWindow, KeychainManager keychain) { + MasterkeyOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Factory recoveryKeyWindow, ForgetPasswordComponent.Builder forgetPasswordWindow, KeychainManager keychain, Lazy application) { this.vault = vault; this.window = window; + this.application = application; this.changePasswordWindow = changePasswordWindow; this.recoveryKeyWindow = recoveryKeyWindow; this.forgetPasswordWindow = forgetPasswordWindow; @@ -40,6 +51,7 @@ public class MasterkeyOptionsController implements FxController { } else { this.passwordSaved = new SimpleBooleanProperty(false); } + this.masterkeyFileAvailable = new SimpleBooleanProperty(Files.exists(vault.getPath().resolve(MASTERKEY_FILENAME))); } @FXML @@ -63,6 +75,11 @@ public class MasterkeyOptionsController implements FxController { forgetPasswordWindow.vault(vault).owner(window).build().showForgetPassword(); } + @FXML + public void openDocs() { + application.get().getHostServices().showDocument(DOCS_URL); + } + public ObservableValue passwordSavedProperty() { return passwordSaved; } @@ -70,4 +87,12 @@ public class MasterkeyOptionsController implements FxController { public boolean isPasswordSaved() { return passwordSaved.getValue(); } + + public BooleanProperty masterkeyFileAvailableProperty() { + return masterkeyFileAvailable; + } + + public boolean isMasterkeyFileAvailable() { + return masterkeyFileAvailable.get(); + } } diff --git a/src/main/resources/fxml/vault_options_masterkey.fxml b/src/main/resources/fxml/vault_options_masterkey.fxml index a06244178..924235642 100644 --- a/src/main/resources/fxml/vault_options_masterkey.fxml +++ b/src/main/resources/fxml/vault_options_masterkey.fxml @@ -3,9 +3,15 @@ + + + + + + - + + + + + + + + + + + + + + -