mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:37:32 +00:00
refactor(notification): use new queue package (#9360)
# Which Problems Are Solved The recently introduced notification queue have potential race conditions. # How the Problems Are Solved Current code is refactored to use the queue package, which is safe in regards of concurrency. # Additional Changes - the queue is included in startup - improved code quality of queue # Additional Context - closes https://github.com/zitadel/zitadel/issues/9278
This commit is contained in:
@@ -39,7 +39,7 @@ func SendEmail(
|
||||
translator *i18n.Translator,
|
||||
user *query.NotifyUser,
|
||||
colors *query.LabelPolicy,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) Notify {
|
||||
return func(
|
||||
urlTmpl string,
|
||||
@@ -66,7 +66,7 @@ func SendEmail(
|
||||
data,
|
||||
args,
|
||||
allowUnverifiedNotificationChannel,
|
||||
triggeringEvent,
|
||||
triggeringEventType,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -102,7 +102,9 @@ func SendSMS(
|
||||
translator *i18n.Translator,
|
||||
user *query.NotifyUser,
|
||||
colors *query.LabelPolicy,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
instanceID string,
|
||||
jobID string,
|
||||
generatorInfo *senders.CodeGeneratorInfo,
|
||||
) Notify {
|
||||
return func(
|
||||
@@ -124,7 +126,9 @@ func SendSMS(
|
||||
data,
|
||||
args,
|
||||
allowUnverifiedNotificationChannel,
|
||||
triggeringEvent,
|
||||
triggeringEventType,
|
||||
instanceID,
|
||||
jobID,
|
||||
generatorInfo,
|
||||
)
|
||||
}
|
||||
@@ -135,7 +139,7 @@ func SendJSON(
|
||||
webhookConfig webhook.Config,
|
||||
channels ChannelChains,
|
||||
serializable interface{},
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) Notify {
|
||||
return func(_ string, _ map[string]interface{}, _ string, _ bool) error {
|
||||
return handleWebhook(
|
||||
@@ -143,7 +147,7 @@ func SendJSON(
|
||||
webhookConfig,
|
||||
channels,
|
||||
serializable,
|
||||
triggeringEvent,
|
||||
triggeringEventType,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -153,7 +157,7 @@ func SendSecurityTokenEvent(
|
||||
setConfig set.Config,
|
||||
channels ChannelChains,
|
||||
token any,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) Notify {
|
||||
return func(_ string, _ map[string]interface{}, _ string, _ bool) error {
|
||||
return handleSecurityTokenEvent(
|
||||
@@ -161,7 +165,7 @@ func SendSecurityTokenEvent(
|
||||
setConfig,
|
||||
channels,
|
||||
token,
|
||||
triggeringEvent,
|
||||
triggeringEventType,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@@ -13,11 +13,11 @@ func handleSecurityTokenEvent(
|
||||
setConfig set.Config,
|
||||
channels ChannelChains,
|
||||
token any,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) error {
|
||||
message := &messages.Form{
|
||||
Serializable: token,
|
||||
TriggeringEvent: triggeringEvent,
|
||||
Serializable: token,
|
||||
TriggeringEventType: triggeringEventType,
|
||||
}
|
||||
setChannels, err := channels.SecurityTokenEvent(ctx, setConfig)
|
||||
if err != nil {
|
||||
|
@@ -23,7 +23,7 @@ func generateEmail(
|
||||
data templates.TemplateData,
|
||||
args map[string]interface{},
|
||||
lastEmail bool,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) error {
|
||||
emailChannels, config, err := channels.Email(ctx)
|
||||
logging.OnError(err).Error("could not create email channel")
|
||||
@@ -38,10 +38,10 @@ func generateEmail(
|
||||
}
|
||||
if config.SMTPConfig != nil {
|
||||
message := &messages.Email{
|
||||
Recipients: []string{recipient},
|
||||
Subject: data.Subject,
|
||||
Content: html.UnescapeString(template),
|
||||
TriggeringEvent: triggeringEvent,
|
||||
Recipients: []string{recipient},
|
||||
Subject: data.Subject,
|
||||
Content: html.UnescapeString(template),
|
||||
TriggeringEventType: triggeringEventType,
|
||||
}
|
||||
return emailChannels.HandleMessage(message)
|
||||
}
|
||||
@@ -52,7 +52,7 @@ func generateEmail(
|
||||
}
|
||||
contextInfo := map[string]interface{}{
|
||||
"recipientEmailAddress": recipient,
|
||||
"eventType": triggeringEvent.Type(),
|
||||
"eventType": triggeringEventType,
|
||||
"provider": config.ProviderConfig,
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ func generateEmail(
|
||||
TemplateData: data,
|
||||
Args: caseArgs,
|
||||
},
|
||||
TriggeringEvent: triggeringEvent,
|
||||
TriggeringEventType: triggeringEventType,
|
||||
}
|
||||
webhookChannels, err := channels.Webhook(ctx, *config.WebhookConfig)
|
||||
if err != nil {
|
||||
|
@@ -28,7 +28,9 @@ func generateSms(
|
||||
data templates.TemplateData,
|
||||
args map[string]interface{},
|
||||
lastPhone bool,
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
instanceID string,
|
||||
jobID string,
|
||||
generatorInfo *senders.CodeGeneratorInfo,
|
||||
) error {
|
||||
smsChannels, config, err := channels.SMS(ctx)
|
||||
@@ -51,7 +53,10 @@ func generateSms(
|
||||
SenderPhoneNumber: number,
|
||||
RecipientPhoneNumber: recipient,
|
||||
Content: data.Text,
|
||||
TriggeringEvent: triggeringEvent,
|
||||
TriggeringEventType: triggeringEventType,
|
||||
InstanceID: instanceID,
|
||||
JobID: jobID,
|
||||
UserID: user.ID,
|
||||
}
|
||||
err = smsChannels.HandleMessage(message)
|
||||
if err != nil {
|
||||
@@ -70,7 +75,7 @@ func generateSms(
|
||||
}
|
||||
contextInfo := map[string]interface{}{
|
||||
"recipientPhoneNumber": recipient,
|
||||
"eventType": triggeringEvent.Type(),
|
||||
"eventType": triggeringEventType,
|
||||
"provider": config.ProviderConfig,
|
||||
}
|
||||
|
||||
@@ -80,7 +85,7 @@ func generateSms(
|
||||
Args: caseArgs,
|
||||
ContextInfo: contextInfo,
|
||||
},
|
||||
TriggeringEvent: triggeringEvent,
|
||||
TriggeringEventType: triggeringEventType,
|
||||
}
|
||||
webhookChannels, err := channels.Webhook(ctx, *config.WebhookConfig)
|
||||
if err != nil {
|
||||
|
@@ -13,11 +13,11 @@ func handleWebhook(
|
||||
webhookConfig webhook.Config,
|
||||
channels ChannelChains,
|
||||
serializable interface{},
|
||||
triggeringEvent eventstore.Event,
|
||||
triggeringEventType eventstore.EventType,
|
||||
) error {
|
||||
message := &messages.JSON{
|
||||
Serializable: serializable,
|
||||
TriggeringEvent: triggeringEvent,
|
||||
Serializable: serializable,
|
||||
TriggeringEventType: triggeringEventType,
|
||||
}
|
||||
webhookChannels, err := channels.Webhook(ctx, webhookConfig)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user