From 0d57de9975b1429dab37121ce0b8d1bbf941ccc9 Mon Sep 17 00:00:00 2001 From: Arne Luenser Date: Wed, 17 Apr 2024 15:56:24 +0200 Subject: [PATCH] fix: allow updating just the verified_at timestamp of addresses --- identity/identity_verification.go | 2 +- identity/identity_verification_test.go | 9 ++++----- persistence/sql/identity/persister_identity.go | 3 +++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/identity/identity_verification.go b/identity/identity_verification.go index 54ac435ec9fd..251fee019d3b 100644 --- a/identity/identity_verification.go +++ b/identity/identity_verification.go @@ -118,5 +118,5 @@ func (a VerifiableAddress) ValidateNID() error { // Hash returns a unique string representation for the recovery address. func (a VerifiableAddress) Hash() string { - return fmt.Sprintf("%v|%v|%v|%v|%v|%v", a.Value, a.Verified, a.Via, a.Status, a.IdentityID, a.NID) + return fmt.Sprintf("%v|%v|%v|%v|%v|%v|%v", a.Value, a.Verified, a.Via, a.Status, a.VerifiedAt, a.IdentityID, a.NID) } diff --git a/identity/identity_verification_test.go b/identity/identity_verification_test.go index 4559a5759dba..6f3ca2c69524 100644 --- a/identity/identity_verification_test.go +++ b/identity/identity_verification_test.go @@ -34,10 +34,10 @@ func TestNewVerifiableEmailAddress(t *testing.T) { } var tagsIgnoredForHashing = map[string]struct{}{ - "id": {}, - "created_at": {}, - "updated_at": {}, - "verified_at": {}, + "id": {}, + "created_at": {}, + "updated_at": {}, + // "verified_at": {}, // we explicitly want to be able to update just this field and nothing else } func reflectiveHash(record any) string { @@ -102,5 +102,4 @@ func TestVerifiableAddress_Hash(t *testing.T) { ) }) } - } diff --git a/persistence/sql/identity/persister_identity.go b/persistence/sql/identity/persister_identity.go index 8c001bc87e6e..d83bac5b0c43 100644 --- a/persistence/sql/identity/persister_identity.go +++ b/persistence/sql/identity/persister_identity.go @@ -477,6 +477,9 @@ func (p *IdentityPersister) normalizeVerifiableAddresses(ctx context.Context, id if v.Verified && (v.VerifiedAt == nil || time.Time(*v.VerifiedAt).IsZero()) { v.VerifiedAt = pointerx.Ptr(sqlxx.NullTime(time.Now())) } + if !v.Verified { + v.VerifiedAt = pointerx.Ptr(sqlxx.NullTime{}) + } id.VerifiableAddresses[k] = v }