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.MessageTextView, 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, FooterText: text.FooterText, 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 }