Skip to content

Commit

Permalink
fix: unix keyring deleteall
Browse files Browse the repository at this point in the history
Signed-off-by: avallete <andrew.valleteau@supabase.io>
  • Loading branch information
avallete committed Sep 10, 2024
1 parent 4805d10 commit 18c3ffd
Showing 1 changed file with 34 additions and 7 deletions.
41 changes: 34 additions & 7 deletions keyring_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,31 @@ func (s secretServiceProvider) findItem(svc *ss.SecretService, service, user str
return results[0], nil
}

// findServiceItems looksup all items by service.
func (s secretServiceProvider) findServiceItems(svc *ss.SecretService, service string) ([]dbus.ObjectPath, error) {
collection := svc.GetLoginCollection()

search := map[string]string{
"service": service,
}

err := svc.Unlock(collection.Path())
if err != nil {
return []dbus.ObjectPath{}, err
}

results, err := svc.SearchItems(collection, search)
if err != nil {
return []dbus.ObjectPath{}, err
}

if len(results) == 0 {
return []dbus.ObjectPath{}, ErrNotFound
}

return results, nil
}

// Get gets a secret from the keyring given a service name and a user.
func (s secretServiceProvider) Get(service, user string) (string, error) {
svc, err := ss.NewSecretService()
Expand Down Expand Up @@ -130,19 +155,21 @@ func (s secretServiceProvider) DeleteAll(service string) error {
if err != nil {
return err
}
for {
item, err := s.findItem(svc, service, "")
if err != nil {
if err == ErrNotFound {
return nil
}
return err
// find all items for the service
items, err := s.findServiceItems(svc, service)
if err != nil {
if err == ErrNotFound {
return nil
}
return err
}
for _, item := range items {
err = svc.Delete(item)
if err != nil {
return err
}
}
return nil
}

func init() {
Expand Down

0 comments on commit 18c3ffd

Please # to comment.