From 9a411e70b22ceb902c040d18828ed432bffe7738 Mon Sep 17 00:00:00 2001 From: Lennart Fleischmann Date: Mon, 20 Jan 2025 20:43:31 +0100 Subject: [PATCH] feat: add more webhook email types --- backend/dto/webhook/email.go | 24 ++++++++++++++++++- .../action_resend_passcode.go | 6 +++-- .../credential_usage/hook_send_passcode.go | 6 +++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/backend/dto/webhook/email.go b/backend/dto/webhook/email.go index 7d33e4886..9cf369082 100644 --- a/backend/dto/webhook/email.go +++ b/backend/dto/webhook/email.go @@ -22,6 +22,28 @@ type PasscodeData struct { type EmailType string +func EmailTypeFromStashedTemplateName(stashedTemplateName string) EmailType { + switch stashedTemplateName { + case "login": + return EmailTypePasscode + case "email_login_attempted": + return EmailTypeLoginAttempt + case "email_verification": + return EmailTypeEmailVerification + case "email_registration_attempted": + return EmailTypeRegistrationAttempt + case "recovery": + return EmailTypeRecovery + default: + return EmailTypeUnknown + } +} + var ( - EmailTypePasscode EmailType = "passcode" + EmailTypePasscode EmailType = "passcode" + EmailTypeLoginAttempt EmailType = "login_attempt" + EmailTypeRegistrationAttempt EmailType = "registration_attempt" + EmailTypeEmailVerification EmailType = "email_verification" + EmailTypeRecovery EmailType = "recovery" + EmailTypeUnknown EmailType = "unknown" ) diff --git a/backend/flow_api/flow/credential_usage/action_resend_passcode.go b/backend/flow_api/flow/credential_usage/action_resend_passcode.go index b75c31d4e..1a7c70aad 100644 --- a/backend/flow_api/flow/credential_usage/action_resend_passcode.go +++ b/backend/flow_api/flow/credential_usage/action_resend_passcode.go @@ -54,8 +54,10 @@ func (a ReSendPasscode) Execute(c flowpilot.ExecutionContext) error { } } + passcodeTemplate := c.Stash().Get(shared.StashPathPasscodeTemplate).String() + sendParams := services.SendPasscodeParams{ - Template: c.Stash().Get(shared.StashPathPasscodeTemplate).String(), + Template: passcodeTemplate, EmailAddress: c.Stash().Get(shared.StashPathEmail).String(), Language: deps.HttpContext.Request().Header.Get("X-Language"), } @@ -71,7 +73,7 @@ func (a ReSendPasscode) Execute(c flowpilot.ExecutionContext) error { DeliveredByHanko: deps.Cfg.EmailDelivery.Enabled, AcceptLanguage: sendParams.Language, Language: sendParams.Language, - Type: webhook.EmailTypePasscode, + Type: webhook.EmailTypeFromStashedTemplateName(passcodeTemplate), Data: webhook.PasscodeData{ ServiceName: deps.Cfg.Service.Name, OtpCode: passcodeResult.Code, diff --git a/backend/flow_api/flow/credential_usage/hook_send_passcode.go b/backend/flow_api/flow/credential_usage/hook_send_passcode.go index f16494248..fc55d101f 100644 --- a/backend/flow_api/flow/credential_usage/hook_send_passcode.go +++ b/backend/flow_api/flow/credential_usage/hook_send_passcode.go @@ -63,9 +63,11 @@ func (h SendPasscode) Execute(c flowpilot.HookExecutionContext) error { isDifferentEmailAddress := c.Stash().Get(shared.StashPathEmail).String() != c.Stash().Get(shared.StashPathPasscodeEmail).String() + passcodeTemplate := c.Stash().Get(shared.StashPathPasscodeTemplate).String() + if !passcodeIsValid || isDifferentEmailAddress { sendParams := services.SendPasscodeParams{ - Template: c.Stash().Get(shared.StashPathPasscodeTemplate).String(), + Template: passcodeTemplate, EmailAddress: c.Stash().Get(shared.StashPathEmail).String(), Language: deps.HttpContext.Request().Header.Get("X-Language"), } @@ -92,7 +94,7 @@ func (h SendPasscode) Execute(c flowpilot.HookExecutionContext) error { DeliveredByHanko: deps.Cfg.EmailDelivery.Enabled, AcceptLanguage: sendParams.Language, Language: sendParams.Language, - Type: webhook.EmailTypePasscode, + Type: webhook.EmailTypeFromStashedTemplateName(passcodeTemplate), Data: webhook.PasscodeData{ ServiceName: deps.Cfg.Service.Name, OtpCode: passcodeResult.Code,