mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-11-03 13:11:46 +08:00
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package plg_authenticate_local
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"text/template"
|
|
|
|
. "github.com/mickael-kerjean/filestash/server/common"
|
|
|
|
"gopkg.in/gomail.v2"
|
|
)
|
|
|
|
func isEmailSetup() bool {
|
|
if Config.Get("email.from").String() == "" {
|
|
return false
|
|
}
|
|
if Config.Get("email.server").String() == "" {
|
|
return false
|
|
}
|
|
if Config.Get("email.port").Int() == 0 {
|
|
return false
|
|
}
|
|
if Config.Get("email.username").String() == "" {
|
|
return false
|
|
}
|
|
if Config.Get("email.password").String() == "" {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
func sendInvitateMail(user User) error {
|
|
cfg, err := getPluginData()
|
|
if err != nil {
|
|
return err
|
|
} else if cfg.Subject == "" || cfg.Body == "" {
|
|
return nil
|
|
}
|
|
m := gomail.NewMessage()
|
|
m.SetHeader("From", Config.Get("email.from").String())
|
|
m.SetHeader("To", user.Email)
|
|
m.SetHeader("Subject", withTemplate(cfg.Subject, user))
|
|
m.SetBody("text/plain", withTemplate(cfg.Body, user))
|
|
d := gomail.NewDialer(
|
|
Config.Get("email.server").String(),
|
|
Config.Get("email.port").Int(),
|
|
Config.Get("email.username").String(),
|
|
Config.Get("email.password").String(),
|
|
)
|
|
if err := d.DialAndSend(m); err != nil {
|
|
return fmt.Errorf("cannot send mail - reason=%s", err.Error())
|
|
}
|
|
Log.Info("plg_authenticate_simple::notification action=sent email=%s", user.Email)
|
|
return nil
|
|
}
|
|
|
|
func withTemplate(in string, user User) string {
|
|
var b bytes.Buffer
|
|
tmpl, err := template.New("app").Parse(in)
|
|
if err != nil {
|
|
Log.Warning("plg_authenticate_simple::mail err=cannot_compile_template")
|
|
return in
|
|
}
|
|
tmpl.Execute(&b, map[string]string{
|
|
"user": user.Email,
|
|
"password": user.Password,
|
|
"role": user.Role,
|
|
})
|
|
return b.String()
|
|
}
|