|
|
|
|
@ -44,7 +44,7 @@ func NewResetEmail(ctx context.Context, settings setting.Provider, user *ent.Use
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resTitle strings.Builder
|
|
|
|
|
err = tmplTitle.Execute(&resTitle, resetCtx)
|
|
|
|
|
err = tmplTitle.Execute(&resTitle, resetCtx.templateData())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", fmt.Errorf("failed to execute email title: %w", err)
|
|
|
|
|
}
|
|
|
|
|
@ -55,7 +55,7 @@ func NewResetEmail(ctx context.Context, settings setting.Provider, user *ent.Use
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resBody strings.Builder
|
|
|
|
|
err = tmplBody.Execute(&resBody, resetCtx)
|
|
|
|
|
err = tmplBody.Execute(&resBody, resetCtx.templateData())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
|
|
|
|
}
|
|
|
|
|
@ -90,7 +90,7 @@ func NewActivationEmail(ctx context.Context, settings setting.Provider, user *en
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resTitle strings.Builder
|
|
|
|
|
err = tmplTitle.Execute(&resTitle, activationCtx)
|
|
|
|
|
err = tmplTitle.Execute(&resTitle, activationCtx.templateData())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", fmt.Errorf("failed to execute email title: %w", err)
|
|
|
|
|
}
|
|
|
|
|
@ -101,7 +101,7 @@ func NewActivationEmail(ctx context.Context, settings setting.Provider, user *en
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resBody strings.Builder
|
|
|
|
|
err = tmplBody.Execute(&resBody, activationCtx)
|
|
|
|
|
err = tmplBody.Execute(&resBody, activationCtx.templateData())
|
|
|
|
|
if err != nil {
|
|
|
|
|
return "", "", fmt.Errorf("failed to execute email template: %w", err)
|
|
|
|
|
}
|
|
|
|
|
@ -112,24 +112,57 @@ func NewActivationEmail(ctx context.Context, settings setting.Provider, user *en
|
|
|
|
|
func commonContext(ctx context.Context, settings setting.Provider) *CommonContext {
|
|
|
|
|
logo := settings.Logo(ctx)
|
|
|
|
|
siteUrl := settings.SiteURL(ctx)
|
|
|
|
|
res := &CommonContext{
|
|
|
|
|
SiteBasic: settings.SiteBasic(ctx),
|
|
|
|
|
Logo: settings.Logo(ctx),
|
|
|
|
|
SiteUrl: siteUrl.String(),
|
|
|
|
|
}
|
|
|
|
|
resolvedLogo := *logo
|
|
|
|
|
|
|
|
|
|
// Add site url if logo is not an url
|
|
|
|
|
if !strings.HasPrefix(logo.Light, "http") {
|
|
|
|
|
logoPath, _ := url.Parse(logo.Light)
|
|
|
|
|
res.Logo.Light = siteUrl.ResolveReference(logoPath).String()
|
|
|
|
|
resolvedLogo.Light = siteUrl.ResolveReference(logoPath).String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !strings.HasPrefix(logo.Normal, "http") {
|
|
|
|
|
logoPath, _ := url.Parse(logo.Normal)
|
|
|
|
|
res.Logo.Normal = siteUrl.ResolveReference(logoPath).String()
|
|
|
|
|
resolvedLogo.Normal = siteUrl.ResolveReference(logoPath).String()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &CommonContext{
|
|
|
|
|
SiteBasic: settings.SiteBasic(ctx),
|
|
|
|
|
Logo: &resolvedLogo,
|
|
|
|
|
SiteUrl: siteUrl.String(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *CommonContext) templateData() map[string]any {
|
|
|
|
|
return map[string]any{
|
|
|
|
|
"SiteBasic": map[string]string{
|
|
|
|
|
"Name": c.SiteBasic.Name,
|
|
|
|
|
"Title": c.SiteBasic.Title,
|
|
|
|
|
"ID": c.SiteBasic.ID,
|
|
|
|
|
"Description": c.SiteBasic.Description,
|
|
|
|
|
"Script": c.SiteBasic.Script,
|
|
|
|
|
},
|
|
|
|
|
"Logo": map[string]string{
|
|
|
|
|
"Normal": c.Logo.Normal,
|
|
|
|
|
"Light": c.Logo.Light,
|
|
|
|
|
},
|
|
|
|
|
"SiteUrl": c.SiteUrl,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c ResetContext) templateData() map[string]any {
|
|
|
|
|
return map[string]any{
|
|
|
|
|
"CommonContext": c.CommonContext.templateData(),
|
|
|
|
|
"User": c.User,
|
|
|
|
|
"Url": c.Url,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return res
|
|
|
|
|
func (c ActivationContext) templateData() map[string]any {
|
|
|
|
|
return map[string]any{
|
|
|
|
|
"CommonContext": c.CommonContext.templateData(),
|
|
|
|
|
"User": c.User,
|
|
|
|
|
"Url": c.Url,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func selectTemplate(templates []setting.EmailTemplate, u *ent.User) setting.EmailTemplate {
|
|
|
|
|
@ -144,4 +177,4 @@ func selectTemplate(templates []setting.EmailTemplate, u *ent.User) setting.Emai
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return selected
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|