diff --git a/bindings/ud.go b/bindings/ud.go index c791d0e0b74d03ecae3dc5f067f22d3e53e437ed..5c20b78fd047aac309f29a080d3b1b243237ef8d 100644 --- a/bindings/ud.go +++ b/bindings/ud.go @@ -9,6 +9,7 @@ package bindings import ( "fmt" + jww "github.com/spf13/jwalterweatherman" "time" "github.com/pkg/errors" @@ -62,22 +63,35 @@ func NewUserDiscoveryFromBackup(client *Client, if err != nil { return nil, errors.WithMessage(err, "Failed to create User Discovery Manager") } + + // Parse username as a fact, which should not be empty userFact, err := fact.NewFact(fact.Username, username) if err != nil { return nil, errors.WithMessagef(err, "Failed to parse "+ "stringified username fact %q", username) } - emailFact, err := fact.NewFact(fact.Email, email) - if err != nil { - return nil, errors.WithMessagef(err, "Failed to parse "+ - "stringified email fact %q", email) + var emailFact, phoneFact fact.Fact + // Parse email as a fact, if it exists + if email != "" { + emailFact, err = fact.NewFact(fact.Email, email) + if err != nil { + return nil, errors.WithMessagef(err, "Failed to parse "+ + "stringified email fact %q", email) + } + } else { + jww.WARN.Printf("Loading manager without a registered email") } - phoneFact, err := fact.NewFact(fact.Phone, phone) - if err != nil { - return nil, errors.WithMessagef(err, "Failed to parse "+ - "stringified phone fact %q", phone) + // Parse phone number as a fact, if it exists + if phone != "" { + phoneFact, err = fact.NewFact(fact.Phone, phone) + if err != nil { + return nil, errors.WithMessagef(err, "Failed to parse "+ + "stringified phone fact %q", phone) + } + } else { + jww.WARN.Printf("Loading manager without a registered phone number") } m, err := ud.NewManagerFromBackup(&client.api, single, fact.FactList{userFact, emailFact, phoneFact}) diff --git a/storage/ud/facts.go b/storage/ud/facts.go index 7f099fac4947b989a723da41d4fb431ef5c4822f..460d1dbb3a6e4120e8ca0ef3fb08f15a380af9dc 100644 --- a/storage/ud/facts.go +++ b/storage/ud/facts.go @@ -62,7 +62,9 @@ func (s *Store) RestoreFromBackUp(backupData fact.FactList) error { } for _, f := range backupData { - s.confirmedFacts[f] = struct{}{} + if !isFactZero(f) { + s.confirmedFacts[f] = struct{}{} + } } return s.save()