Improve system email settings
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user