Keep recent remote passwords masked

This commit is contained in:
Joe Julian
2026-03-29 21:07:57 -07:00
parent 4e082c345a
commit 62bb20edb0
2 changed files with 35 additions and 1 deletions
+2 -1
View File
@@ -261,7 +261,7 @@ func newUIWithState(mode string, sess appstate.CurrentSession, paths statePaths)
remoteBaseURL: widget.Editor{SingleLine: true, Submit: false},
remotePath: widget.Editor{SingleLine: true, Submit: false},
remoteUsername: widget.Editor{SingleLine: true, Submit: false},
remotePassword: widget.Editor{SingleLine: true, Submit: false},
remotePassword: widget.Editor{SingleLine: true, Submit: false, Mask: '•'},
masterPassword: widget.Editor{SingleLine: true, Submit: false},
keyFilePath: widget.Editor{SingleLine: true, Submit: false},
entryID: widget.Editor{SingleLine: true, Submit: false},
@@ -1333,6 +1333,7 @@ func (u *ui) layout(gtx layout.Context) layout.Dimensions {
u.remotePath.SetText(record.Path)
u.remoteUsername.SetText(record.Username)
u.remotePassword.SetText(record.Password)
u.remotePassword.Mask = '•'
u.rememberRemoteAuth.Value = strings.TrimSpace(record.Username) != "" || record.Password != ""
}
}
+33
View File
@@ -12,8 +12,10 @@ import (
"testing"
"time"
"gioui.org/layout"
"gioui.org/io/key"
"gioui.org/unit"
"gioui.org/widget"
"git.julianfamily.org/keepassgo/clipboard"
"git.julianfamily.org/keepassgo/passwords"
@@ -2001,6 +2003,37 @@ func TestUIRecentRemoteConnectionsPersistAndReload(t *testing.T) {
}
}
func TestSelectingRecentRemoteConnectionKeepsPasswordMasked(t *testing.T) {
t.Parallel()
u := newUIWithSession("desktop", &session.Manager{})
u.recentRemotes = []recentRemoteRecord{{
BaseURL: "https://dav.example.com",
Path: "vaults/home.kdbx",
Username: "alice",
Password: "secret-1",
}}
u.recentRemoteClicks = make([]widget.Clickable, 1)
u.remotePassword.Mask = 0
u.recentRemoteClicks[0].Click()
gtx := layout.Context{}
for u.recentRemoteClicks[0].Clicked(gtx) {
record := u.recentRemotes[0]
u.remoteBaseURL.SetText(record.BaseURL)
u.remotePath.SetText(record.Path)
u.remoteUsername.SetText(record.Username)
u.remotePassword.SetText(record.Password)
u.remotePassword.Mask = '•'
u.rememberRemoteAuth.Value = true
}
if got := u.remotePassword.Mask; got != '•' {
t.Fatalf("remotePassword.Mask = %q, want bullet mask", got)
}
}
func TestUIOpenRemoteVaultRestoresLastOpenedGroupForThatConnection(t *testing.T) {
t.Parallel()