GODT-1522: Rebuild macOS keychain notification

This commit is contained in:
Jakub
2022-03-17 10:57:51 +01:00
parent 0ed78f1ccb
commit 478345e277
9 changed files with 91 additions and 6 deletions

View File

@ -40,6 +40,16 @@ func init() { // nolint[noinit]
defaultHelper = MacOSKeychain
}
func parseError(original error) error {
if original == nil {
return nil
}
if strings.Contains(original.Error(), "25293") {
return ErrMacKeychainRebuild
}
return original
}
func newMacOSHelper(url string) (credentials.Helper, error) {
return &macOSHelper{url: url}, nil
}
@ -76,7 +86,7 @@ func (h *macOSHelper) Add(creds *credentials.Credentials) error {
query := newQuery(hostURL, userID)
query.SetData([]byte(creds.Secret))
return keychain.AddItem(query)
return parseError(keychain.AddItem(query))
}
func (h *macOSHelper) Delete(secretURL string) error {
@ -87,7 +97,7 @@ func (h *macOSHelper) Delete(secretURL string) error {
query := newQuery(hostURL, userID)
return keychain.DeleteItem(query)
return parseError(keychain.DeleteItem(query))
}
func (h *macOSHelper) Get(secretURL string) (string, string, error) {
@ -102,7 +112,7 @@ func (h *macOSHelper) Get(secretURL string) (string, string, error) {
results, err := keychain.QueryItem(query)
if err != nil {
return "", "", err
return "", "", parseError(err)
}
if len(results) == 0 {
@ -121,7 +131,7 @@ func (h *macOSHelper) List() (map[string]string, error) {
userIDs, err := keychain.GetGenericPasswordAccounts(h.url)
if err != nil {
return nil, err
return nil, parseError(err)
}
for _, userID := range userIDs {