// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . //go:build plus package setting import ( "encoding/json" "errors" "github.com/TeaOSLab/EdgeAdmin/internal/configloaders" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/userconfigs" "github.com/iwind/TeaGo/actions" ) type EmailAction struct { actionutils.ParentAction } func (this *EmailAction) Init() { this.Nav("", "", "email") } func (this *EmailAction) RunGet(params struct{}) { config, err := configloaders.LoadUserSenderConfig() if err != nil { this.ErrorPage(err) return } if config == nil { this.ErrorPage(errors.New("'config' should not be nil")) return } // 验证邮件 if config.VerifyEmail == nil { config.VerifyEmail = userconfigs.NewEmailSenderConfig() } // 通知邮件 if config.NotifyEmail == nil { config.NotifyEmail = userconfigs.NewEmailSenderConfig() } this.Data["config"] = config this.Show() } func (this *EmailAction) RunPost(params struct { VerifyEmailJSON []byte NotifyEmailJSON []byte Must *actions.Must CSRF *actionutils.CSRF }) { defer this.CreateLogInfo(codes.User_LogUpdateUserEmailSettings) config, err := configloaders.LoadUserSenderConfig() if err != nil { this.ErrorPage(err) return } var verifyEmailConfig = userconfigs.NewEmailSenderConfig() err = json.Unmarshal(params.VerifyEmailJSON, verifyEmailConfig) if err != nil { this.ErrorPage(err) return } config.VerifyEmail = verifyEmailConfig if verifyEmailConfig.IsOn { params.Must. Field("verifyEmailJSONSmtpHost", verifyEmailConfig.SMTPHost). Require("请输入SMTP地址"). Field("verifyEmailJSONSmtpPort", verifyEmailConfig.SMTPPort). Gt(0, "请输入正确的SMTP端口"). Field("verifyEmailJSONUsername", verifyEmailConfig.Username). Require("请输入用户名"). Field("verifyEmailJSONPassword", verifyEmailConfig.Password). Require("请输入密码"). Field("verifyEmailJSONFromEmail", verifyEmailConfig.FromEmail). Require("请输入发件人Email"). Email("发件人Email格式不正确") } var notifyEmailConfig = userconfigs.NewEmailSenderConfig() err = json.Unmarshal(params.NotifyEmailJSON, notifyEmailConfig) if err != nil { this.ErrorPage(err) return } config.NotifyEmail = notifyEmailConfig if notifyEmailConfig.IsOn { params.Must. Field("notifyEmailJSONSmtpHost", notifyEmailConfig.SMTPHost). Require("请输入SMTP地址"). Field("notifyEmailJSONSmtpPort", notifyEmailConfig.SMTPPort). Gt(0, "请输入正确的SMTP端口"). Field("notifyEmailJSONUsername", notifyEmailConfig.Username). Require("请输入用户名"). Field("notifyEmailJSONPassword", notifyEmailConfig.Password). Require("请输入密码"). Field("notifyEmailJSONFromEmail", notifyEmailConfig.FromEmail). Require("请输入发件人Email"). Email("发件人Email格式不正确") } configJSON, err := json.Marshal(config) if err != nil { this.ErrorPage(err) return } _, err = this.RPC().SysSettingRPC().UpdateSysSetting(this.AdminContext(), &pb.UpdateSysSettingRequest{ Code: systemconfigs.SettingCodeUserSenderConfig, ValueJSON: configJSON, }) if err != nil { this.ErrorPage(err) return } this.Success() }