Other: better keychain logging

This commit is contained in:
James Houlahan
2021-07-06 13:30:49 +02:00
committed by Jakub
parent 2707a5627c
commit 984864553e

View File

@ -18,6 +18,7 @@
package credentials
import (
"errors"
"fmt"
"sort"
"sync"
@ -228,21 +229,28 @@ func (s *Store) Get(userID string) (creds *Credentials, err error) {
return s.get(userID)
}
func (s *Store) get(userID string) (creds *Credentials, err error) {
func (s *Store) get(userID string) (*Credentials, error) {
log := log.WithField("user", userID)
_, secret, err := s.secrets.Get(userID)
if err != nil {
log.WithError(err).Warn("Could not get credentials from native keychain")
return
return nil, err
}
if secret == "" {
return nil, errors.New("secret is empty")
}
credentials := &Credentials{UserID: userID}
if err = credentials.Unmarshal(secret); err != nil {
err = fmt.Errorf("backend/credentials: malformed secret: %v", err)
_ = s.secrets.Delete(userID)
log.WithError(err).Error("Could not unmarshal secret")
return
if err := credentials.Unmarshal(secret); err != nil {
log.WithError(fmt.Errorf("malformed secret: %w", err)).Error("Could not unmarshal secret")
if err := s.secrets.Delete(userID); err != nil {
log.WithError(err).Error("Failed to remove malformed secret")
}
return nil, err
}
return credentials, nil