From d7b2cb73033c44c97b5c3eff96282203cc89b7d7 Mon Sep 17 00:00:00 2001 From: tedwardd Date: Fri, 16 Jun 2023 15:06:00 -0400 Subject: [PATCH] Add support for fetching password from keyring for lemmy --- system/lemmy/connect.go | 2 ++ system/lemmy/lemmy.go | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/system/lemmy/connect.go b/system/lemmy/connect.go index 957aab7..7e2ee76 100644 --- a/system/lemmy/connect.go +++ b/system/lemmy/connect.go @@ -62,6 +62,8 @@ func (sys *System) Connect(sysURL string) error { } else { credentials["password"] = password } + } else { + credentials["password"] = "password_in_keyring" } if sys.config == nil { diff --git a/system/lemmy/lemmy.go b/system/lemmy/lemmy.go index 36bc7ec..1a10caf 100644 --- a/system/lemmy/lemmy.go +++ b/system/lemmy/lemmy.go @@ -8,6 +8,7 @@ import ( "strconv" "time" + "github.com/99designs/keyring" "github.com/mrusme/neonmodem/models/author" "github.com/mrusme/neonmodem/models/forum" "github.com/mrusme/neonmodem/models/post" @@ -144,9 +145,25 @@ func (sys *System) Load() error { credentials[k] = v.(string) } + ring, _ := keyring.Open(keyring.Config{ + ServiceName: "NeonModem - Lemmy", + }) + + var password string + + if credentials["password"] == "password_in_keyring" { + p, err := ring.Get("password") + if err != nil { + return err + } + password = string(p.Data) + } else { + password = credentials["password"] + } + err = sys.client.ClientLogin(context.Background(), types.Login{ UsernameOrEmail: credentials["username"], - Password: credentials["password"], + Password: password, }) if err != nil { return err