mirror of
https://github.com/abhinavxd/libredesk.git
synced 2025-10-23 05:11:57 +00:00
60 lines
1.4 KiB
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
|
|
}
|