3
0

Improve system email settings

This commit is contained in:
Tomaž Jerman
2019-10-23 16:26:33 +02:00
committed by Denis Arh
parent 053be7e893
commit d37c172563
6 changed files with 69 additions and 32 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+12 -28
View File
@@ -18,8 +18,8 @@ type (
ctx context.Context
logger *zap.Logger
settings *AuthSettings
sysSettings SettingsService
settings *AuthSettings
systemSettings *SystemSettings
}
AuthNotificationService interface {
@@ -43,18 +43,18 @@ type (
func AuthNotification(ctx context.Context) AuthNotificationService {
return (&authNotification{
logger: DefaultLogger.Named("auth-notification"),
settings: DefaultAuthSettings,
sysSettings: DefaultSettings,
logger: DefaultLogger.Named("auth-notification"),
settings: DefaultAuthSettings,
systemSettings: DefaultSystemSettings,
}).With(ctx)
}
func (svc authNotification) With(ctx context.Context) AuthNotificationService {
return &authNotification{
ctx: ctx,
logger: logger.AddRequestID(ctx, svc.logger),
settings: svc.settings,
sysSettings: svc.sysSettings,
ctx: ctx,
logger: logger.AddRequestID(ctx, svc.logger),
settings: svc.settings,
systemSettings: svc.systemSettings,
}
}
@@ -85,30 +85,14 @@ func (svc authNotification) newMail() *gomail.Message {
func (svc authNotification) send(name, lang string, payload authNotificationPayload) error {
ntf := svc.newMail()
dl, err := svc.sysSettings.Get("defaultLogo", 0)
if err != nil {
return err
}
defaultLogo := ""
err = dl.Value.Unmarshal(&defaultLogo)
if err != nil {
return err
}
payload.Logo = template.URL(defaultLogo)
payload.Logo = template.URL(svc.systemSettings.DefaultLogo)
payload.BaseURL = svc.settings.FrontendUrlBase
payload.SignatureName = svc.settings.MailFromName
payload.SignatureEmail = svc.settings.MailFromAddress
ms, err := svc.sysSettings.FindByPrefix("mail.")
if err != nil {
return err
}
msKV := ms.KV()
// @todo translations
payload.EmailHeaderEn = template.HTML(svc.render(msKV.String("mail.header.en"), payload))
payload.EmailFooterEn = template.HTML(svc.render(msKV.String("mail.footer.en"), payload))
payload.EmailHeaderEn = template.HTML(svc.render(svc.systemSettings.MailHeader, payload))
payload.EmailFooterEn = template.HTML(svc.render(svc.systemSettings.MailFooter, payload))
ntf.SetAddressHeader("To", payload.EmailAddress, "")
// @todo translations
+6
View File
@@ -64,6 +64,7 @@ var (
DefaultAuthNotification AuthNotificationService
DefaultAuthSettings *AuthSettings
DefaultSystemSettings *SystemSettings
DefaultSink *sink
@@ -100,6 +101,11 @@ func Init(ctx context.Context, log *zap.Logger, c Config) (err error) {
return
}
DefaultSystemSettings, err = DefaultSettings.LoadSystemSettings()
if err != nil {
return
}
DefaultAuthNotification = AuthNotification(ctx)
DefaultAuth = Auth(ctx)
+17
View File
@@ -38,7 +38,9 @@ type (
Get(name string, ownedBy uint64) (out *internalSettings.Value, err error)
LoadAuthSettings() (*AuthSettings, error)
LoadSystemSettings() (*SystemSettings, error)
UpdateAuthSettings(*AuthSettings) error
UpdateSystemSettings(*SystemSettings) error
AutoDiscovery() error
}
)
@@ -106,6 +108,21 @@ func (svc settings) LoadAuthSettings() (*AuthSettings, error) {
return as, svc.UpdateAuthSettings(as)
}
// Loads system.% settings, initializes & fills system settings struct
func (svc settings) LoadSystemSettings() (*SystemSettings, error) {
ss := &SystemSettings{}
return ss, svc.UpdateSystemSettings(ss)
}
func (svc settings) UpdateSystemSettings(ss *SystemSettings) error {
vv, err := svc.internalSettings.FindByPrefix("system.")
if err != nil {
return err
}
return ss.ReadKV(vv.KV())
}
func (svc settings) UpdateAuthSettings(as *AuthSettings) error {
vv, err := svc.internalSettings.FindByPrefix("auth.")
if err != nil {
+30
View File
@@ -0,0 +1,30 @@
package service
import (
intset "github.com/cortezaproject/corteza-server/pkg/settings"
)
type (
SystemSettings struct {
DefaultLogo string
MailHeader string
MailFooter string
}
)
// ParseAuthSettings maps from plain values to AuthSettings struct
//
// see settings.Initialize() func
func ParseSystemSettings(kv intset.KV) (ss *SystemSettings, err error) {
ss = &SystemSettings{}
ss.ReadKV(kv)
return
}
func (ss *SystemSettings) ReadKV(kv intset.KV) (err error) {
ss.DefaultLogo = kv.String("system.defaultLogo")
ss.MailHeader = kv.String("system.mail.header.en")
ss.MailFooter = kv.String("system.mail.footer.en")
return
}