diff --git a/courier/template/email/recovery_code_valid.go b/courier/template/email/recovery_code_valid.go index 5468ac70206b..597381c461ec 100644 --- a/courier/template/email/recovery_code_valid.go +++ b/courier/template/email/recovery_code_valid.go @@ -19,6 +19,7 @@ type ( } RecoveryCodeValidModel struct { To string + FlowID string RecoveryCode string Identity map[string]interface{} } diff --git a/selfservice/strategy/code/code_sender.go b/selfservice/strategy/code/code_sender.go index 3317fafdb2e4..88c94d098ca1 100644 --- a/selfservice/strategy/code/code_sender.go +++ b/selfservice/strategy/code/code_sender.go @@ -228,6 +228,7 @@ func (s *Sender) SendRecoveryCodeTo(ctx context.Context, i *identity.Identity, c emailModel := email.RecoveryCodeValidModel{ To: code.RecoveryAddress.Value, + FlowID: code.FlowID.String(), RecoveryCode: codeString, Identity: model, } diff --git a/selfservice/strategy/code/code_sender_test.go b/selfservice/strategy/code/code_sender_test.go index e5ba75826eb5..c7b52e0d72f9 100644 --- a/selfservice/strategy/code/code_sender_test.go +++ b/selfservice/strategy/code/code_sender_test.go @@ -6,12 +6,14 @@ package code_test import ( "context" "encoding/base64" + "encoding/json" "fmt" "net/http" "testing" "time" "github.com/ory/kratos/courier" + "github.com/ory/kratos/courier/template/email" "github.com/ory/kratos/internal/testhelpers" "github.com/stretchr/testify/assert" @@ -65,6 +67,16 @@ func TestSender(t *testing.T) { require.NoError(t, err) require.Len(t, messages, 2) + // verify correct templateData + var templateData = string(messages[0].TemplateData[:]) + var data = email.RecoveryCodeValidModel{} + err = json.Unmarshal([]byte(templateData), &data) + require.NoError(t, err) + require.NotEmpty(t, data.To) + require.NotEmpty(t, data.FlowID) + require.NotEmpty(t, data.RecoveryCode) + require.NotEmpty(t, data.Identity) + assert.EqualValues(t, "tracked@ory.sh", messages[0].Recipient) assert.Contains(t, messages[0].Subject, "Recover access to your account")