Files
libredesk/internal/inbox/models/models.go

60 lines
1.4 KiB
Go

package models
import (
"encoding/json"
"strings"
"time"
"github.com/abhinavxd/libredesk/internal/stringutil"
)
// Inbox represents a inbox record in DB.
type Inbox struct {
ID int `db:"id" json:"id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
Name string `db:"name" json:"name"`
Channel string `db:"channel" json:"channel"`
Disabled bool `db:"disabled" json:"disabled"`
CSATEnabled bool `db:"csat_enabled" json:"csat_enabled"`
From string `db:"from" json:"from"`
Config json.RawMessage `db:"config" json:"config"`
}
// ClearPasswords masks all config passwords
func (m *Inbox) ClearPasswords() error {
switch m.Channel {
case "email":
var cfg struct {
IMAP []map[string]interface{} `json:"imap"`
SMTP []map[string]interface{} `json:"smtp"`
}
if err := json.Unmarshal(m.Config, &cfg); err != nil {
return err
}
dummyPassword := strings.Repeat(stringutil.PasswordDummy, 10)
for i := range cfg.IMAP {
cfg.IMAP[i]["password"] = dummyPassword
}
for i := range cfg.SMTP {
cfg.SMTP[i]["password"] = dummyPassword
}
clearedConfig, err := json.Marshal(cfg)
if err != nil {
return err
}
m.Config = clearedConfig
default:
return nil
}
return nil
}