Просмотр исходного кода

fix(email notifications): added error handling to email template parsing, fixes #2690

Torkel Ödegaard 10 лет назад
Родитель
Сommit
fa3329271d
1 измененных файлов с 15 добавлено и 3 удалено
  1. 15 3
      pkg/services/notifications/notifications.go

+ 15 - 3
pkg/services/notifications/notifications.go

@@ -64,16 +64,28 @@ func sendEmailCommandHandler(cmd *m.SendEmailCommand) error {
 	}
 	}
 
 
 	var buffer bytes.Buffer
 	var buffer bytes.Buffer
+	var err error
+	var subjectText interface{}
+
 	data := cmd.Data
 	data := cmd.Data
 	if data == nil {
 	if data == nil {
 		data = make(map[string]interface{}, 10)
 		data = make(map[string]interface{}, 10)
 	}
 	}
 
 
 	setDefaultTemplateData(data, nil)
 	setDefaultTemplateData(data, nil)
-	mailTemplates.ExecuteTemplate(&buffer, cmd.Template, data)
+	err = mailTemplates.ExecuteTemplate(&buffer, cmd.Template, data)
+	if err != nil {
+		return err
+	}
+
+	subjectData := data["Subject"].(map[string]interface{})
+	subjectText, hasSubject := subjectData["value"]
+
+	if !hasSubject {
+		return errors.New(fmt.Sprintf("Missing subject in Template %s", cmd.Template))
+	}
 
 
-	subjectTmplText := data["Subject"].(map[string]interface{})["value"].(string)
-	subjectTmpl, err := template.New("subject").Parse(subjectTmplText)
+	subjectTmpl, err := template.New("subject").Parse(subjectText.(string))
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}