From 7182eca074c8e84be325d62c75b62d22698878be Mon Sep 17 00:00:00 2001 From: Henning Perl Date: Mon, 19 Jun 2023 15:22:57 +0200 Subject: [PATCH] fix: add error checking when creating verification code (#3328) --- persistence/sql/persister_verification.go | 15 +++++++++------ selfservice/strategy/code/verification_code.go | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/persistence/sql/persister_verification.go b/persistence/sql/persister_verification.go index f25bf5e3814..30bc4ac5671 100644 --- a/persistence/sql/persister_verification.go +++ b/persistence/sql/persister_verification.go @@ -11,6 +11,7 @@ import ( "github.com/pkg/errors" + "github.com/ory/herodot" "github.com/ory/kratos/identity" "github.com/ory/kratos/persistence/sql/update" @@ -257,12 +258,14 @@ func (p *Persister) CreateVerificationCode(ctx context.Context, c *code.CreateVe NID: p.NetworkID(ctx), } - if c.VerifiableAddress != nil { - verificationCode.VerifiableAddress = c.VerifiableAddress - verificationCode.VerifiableAddressID = uuid.NullUUID{ - UUID: c.VerifiableAddress.ID, - Valid: true, - } + if c.VerifiableAddress == nil { + return nil, errors.WithStack(herodot.ErrNotFound.WithReason("can't create a verification code without a verifiable address")) + } + + verificationCode.VerifiableAddress = c.VerifiableAddress + verificationCode.VerifiableAddressID = uuid.NullUUID{ + UUID: c.VerifiableAddress.ID, + Valid: true, } // This should not create the request eagerly because otherwise we might accidentally create an address that isn't diff --git a/selfservice/strategy/code/verification_code.go b/selfservice/strategy/code/verification_code.go index b6303008d7a..a4f204bae17 100644 --- a/selfservice/strategy/code/verification_code.go +++ b/selfservice/strategy/code/verification_code.go @@ -31,7 +31,7 @@ type VerificationCode struct { // VerifiableAddress links this code to a verification address. // required: true - VerifiableAddress *identity.VerifiableAddress `json:"verification_address" belongs_to:"identity_verifiable_addresses" fk_id:"VerificationAddVerifiableAddressIDressID"` + VerifiableAddress *identity.VerifiableAddress `json:"verification_address" belongs_to:"identity_verifiable_addresses"` // ExpiresAt is the time (UTC) when the code expires. // required: true @@ -52,7 +52,7 @@ type VerificationCode struct { NID uuid.UUID `json:"-" faker:"-" db:"nid"` } -func (VerificationCode) TableName(ctx context.Context) string { +func (VerificationCode) TableName(context.Context) string { return "identity_verification_codes" }