zitadel/internal/notification/templates/templateData.go
Livio Amstutz 255139862d
fix: email template (#1830)
* fix: email template

* fix: email template
2021-06-08 15:12:52 +02:00

96 lines
3.0 KiB
Go

package templates
import (
"fmt"
"html"
"strings"
"github.com/caos/zitadel/internal/i18n"
iam_model "github.com/caos/zitadel/internal/iam/model"
)
const (
defaultFont = "http://fonts.googleapis.com/css?family=Lato:200,300,400,600"
defaultFontFamily = "-apple-system, BlinkMacSystemFont, Segoe UI, Lato, Arial, Helvetica, sans-serif"
defaultLogo = "https://static.zitadel.ch/zitadel-logo-dark@3x.png"
defaultFontColor = "#22292f"
defaultBackgroundColor = "#fafafa"
defaultPrimaryColor = "#5282C1"
//defaultOrgName = "CAOS AG"
//defaultOrgURL = "http://www.caos.ch"
//defaultFooter1 = "Teufener Strasse 19"
//defaultFooter2 = "CH-9000 St. Gallen"
)
type TemplateData struct {
Title string
PreHeader string
Subject string
Greeting string
Text string
Href string
ButtonText string
PrimaryColor string
BackgroundColor string
FontColor string
LogoURL string
FontURL string
FontFamily string
IncludeFooter bool
FooterText string
}
func (data *TemplateData) Translate(i18n *i18n.Translator, args map[string]interface{}, langs ...string) {
data.Title = i18n.Localize(data.Title, nil, langs...)
data.PreHeader = i18n.Localize(data.PreHeader, nil, langs...)
data.Subject = i18n.Localize(data.Subject, nil, langs...)
data.Greeting = i18n.Localize(data.Greeting, args, langs...)
data.Text = html.UnescapeString(i18n.Localize(data.Text, args, langs...))
if data.Href != "" {
data.Href = i18n.Localize(data.Href, nil, langs...)
}
data.ButtonText = i18n.Localize(data.ButtonText, nil, langs...)
}
func GetTemplateData(apiDomain, href string, text *iam_model.MailTextView, policy *iam_model.LabelPolicyView) TemplateData {
templateData := TemplateData{
Title: text.Title,
PreHeader: text.PreHeader,
Subject: text.Subject,
Greeting: text.Greeting,
Text: html.UnescapeString(text.Text),
Href: href,
ButtonText: text.ButtonText,
PrimaryColor: defaultPrimaryColor,
BackgroundColor: defaultBackgroundColor,
FontColor: defaultFontColor,
LogoURL: defaultLogo,
FontURL: defaultFont,
FontFamily: defaultFontFamily,
IncludeFooter: false,
}
if policy.PrimaryColor != "" {
templateData.PrimaryColor = policy.PrimaryColor
}
if policy.BackgroundColor != "" {
templateData.BackgroundColor = policy.BackgroundColor
}
if policy.FontColor != "" {
templateData.FontColor = policy.FontColor
}
if apiDomain == "" {
return templateData
}
templateData.LogoURL = ""
if policy.LogoURL != "" {
templateData.LogoURL = fmt.Sprintf("%s/assets/v1/%s/%s", apiDomain, policy.AggregateID, policy.LogoURL)
}
if policy.FontURL != "" {
split := strings.Split(policy.FontURL, "/")
templateData.FontFamily = split[len(split)-1] + "," + defaultFontFamily
templateData.FontURL = fmt.Sprintf("%s/assets/v1/%s/%s", apiDomain, policy.AggregateID, policy.FontURL)
}
return templateData
}