diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-02-25 00:35:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-25 00:35:35 +0800 |
commit | 52ffb67b33c1823933948c027b6f3605fb42ea7c (patch) | |
tree | c93ee7eb2bb1f8417d350f703afc53cf4dd872f8 /internal/route | |
parent | 0d6c405ccbde9d20889893168f9f9599118e3f5c (diff) |
conf: overhaul email settings (#5940)
Diffstat (limited to 'internal/route')
-rw-r--r-- | internal/route/admin/admin.go | 17 | ||||
-rw-r--r-- | internal/route/admin/users.go | 10 | ||||
-rw-r--r-- | internal/route/api/v1/admin/user.go | 8 | ||||
-rw-r--r-- | internal/route/install.go | 16 | ||||
-rw-r--r-- | internal/route/repo/setting.go | 4 | ||||
-rw-r--r-- | internal/route/user/auth.go | 18 | ||||
-rw-r--r-- | internal/route/user/setting.go | 10 |
7 files changed, 41 insertions, 42 deletions
diff --git a/internal/route/admin/admin.go b/internal/route/admin/admin.go index f11f0d10..1722c373 100644 --- a/internal/route/admin/admin.go +++ b/internal/route/admin/admin.go @@ -17,7 +17,7 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/cron" "gogs.io/gogs/internal/db" - "gogs.io/gogs/internal/mailer" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/process" "gogs.io/gogs/internal/tool" ) @@ -180,12 +180,12 @@ func Dashboard(c *context.Context) { } func SendTestMail(c *context.Context) { - email := c.Query("email") + emailAddr := c.Query("email") // Send a test email to the user's email address and redirect back to Config - if err := mailer.SendTestMail(email); err != nil { - c.Flash.Error(c.Tr("admin.config.test_mail_failed", email, err)) + if err := email.SendTestMail(emailAddr); err != nil { + c.Flash.Error(c.Tr("admin.config.email.test_mail_failed", emailAddr, err)) } else { - c.Flash.Info(c.Tr("admin.config.test_mail_sent", email)) + c.Flash.Info(c.Tr("admin.config.email.test_mail_sent", emailAddr)) } c.Redirect(conf.Server.Subpath + "/admin/config") @@ -202,6 +202,7 @@ func Config(c *context.Context) { c.Data["Repository"] = conf.Repository c.Data["Database"] = conf.Database c.Data["Security"] = conf.Security + c.Data["Email"] = conf.Email c.Data["LogRootPath"] = conf.LogRootPath @@ -210,12 +211,6 @@ func Config(c *context.Context) { c.Data["Service"] = conf.Service c.Data["Webhook"] = conf.Webhook - c.Data["MailerEnabled"] = false - if conf.MailService != nil { - c.Data["MailerEnabled"] = true - c.Data["Mailer"] = conf.MailService - } - c.Data["CacheAdapter"] = conf.CacheAdapter c.Data["CacheInterval"] = conf.CacheInterval c.Data["CacheConn"] = conf.CacheConn diff --git a/internal/route/admin/users.go b/internal/route/admin/users.go index 8c4e7ab2..8d503573 100644 --- a/internal/route/admin/users.go +++ b/internal/route/admin/users.go @@ -13,8 +13,8 @@ import ( "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" - "gogs.io/gogs/internal/mailer" "gogs.io/gogs/internal/route" ) @@ -53,7 +53,7 @@ func NewUser(c *context.Context) { } c.Data["Sources"] = sources - c.Data["CanSendEmail"] = conf.MailService != nil + c.Data["CanSendEmail"] = conf.Email.Enabled c.HTML(200, USER_NEW) } @@ -69,7 +69,7 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { } c.Data["Sources"] = sources - c.Data["CanSendEmail"] = conf.MailService != nil + c.Data["CanSendEmail"] = conf.Email.Enabled if c.HasError() { c.HTML(200, USER_NEW) @@ -115,8 +115,8 @@ func NewUserPost(c *context.Context, f form.AdminCrateUser) { log.Trace("Account created by admin (%s): %s", c.User.Name, u.Name) // Send email notification. - if f.SendNotify && conf.MailService != nil { - mailer.SendRegisterNotifyMail(c.Context, db.NewMailerUser(u)) + if f.SendNotify && conf.Email.Enabled { + email.SendRegisterNotifyMail(c.Context, db.NewMailerUser(u)) } c.Flash.Success(c.Tr("admin.users.new_success", u.Name)) diff --git a/internal/route/api/v1/admin/user.go b/internal/route/api/v1/admin/user.go index 8a78a991..00b13bfd 100644 --- a/internal/route/api/v1/admin/user.go +++ b/internal/route/api/v1/admin/user.go @@ -11,12 +11,12 @@ import ( api "github.com/gogs/go-gogs-client" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/db/errors" - "gogs.io/gogs/internal/mailer" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/route/api/v1/user" - "gogs.io/gogs/internal/conf" ) func parseLoginSource(c *context.APIContext, u *db.User, sourceID int64, loginName string) { @@ -68,8 +68,8 @@ func CreateUser(c *context.APIContext, form api.CreateUserOption) { log.Trace("Account created by admin %q: %s", c.User.Name, u.Name) // Send email notification. - if form.SendNotify && conf.MailService != nil { - mailer.SendRegisterNotifyMail(c.Context.Context, db.NewMailerUser(u)) + if form.SendNotify && conf.Email.Enabled { + email.SendRegisterNotifyMail(c.Context.Context, db.NewMailerUser(u)) } c.JSON(http.StatusCreated, u.APIFormat()) diff --git a/internal/route/install.go b/internal/route/install.go index 707c788d..16054e83 100644 --- a/internal/route/install.go +++ b/internal/route/install.go @@ -24,8 +24,8 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/cron" "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" - "gogs.io/gogs/internal/mailer" "gogs.io/gogs/internal/markup" "gogs.io/gogs/internal/osutil" "gogs.io/gogs/internal/ssh" @@ -63,8 +63,12 @@ func GlobalInit(customConf string) error { log.Trace("Build time: %s", conf.BuildTime) log.Trace("Build commit: %s", conf.BuildCommit) + if conf.Email.Enabled { + log.Trace("Email service is enabled") + } + conf.NewServices() - mailer.NewContext() + email.NewContext() if conf.Security.InstallLock { highlight.NewContext() @@ -171,10 +175,10 @@ func Install(c *context.Context) { f.LogRootPath = conf.LogRootPath // E-mail service settings - if conf.MailService != nil { - f.SMTPHost = conf.MailService.Host - f.SMTPFrom = conf.MailService.From - f.SMTPUser = conf.MailService.User + if conf.Email.Enabled { + f.SMTPHost = conf.Email.Host + f.SMTPFrom = conf.Email.From + f.SMTPUser = conf.Email.User } f.RegisterConfirm = conf.Service.RegisterEmailConfirm f.MailNotify = conf.Service.EnableNotifyMail diff --git a/internal/route/repo/setting.go b/internal/route/repo/setting.go index d3cc46bc..e1049cca 100644 --- a/internal/route/repo/setting.go +++ b/internal/route/repo/setting.go @@ -19,7 +19,7 @@ import ( "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/form" - "gogs.io/gogs/internal/mailer" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/tool" ) @@ -399,7 +399,7 @@ func SettingsCollaborationPost(c *context.Context) { } if conf.Service.EnableNotifyMail { - mailer.SendCollaboratorMail(db.NewMailerUser(u), db.NewMailerUser(c.User), db.NewMailerRepo(c.Repo.Repository)) + email.SendCollaboratorMail(db.NewMailerUser(u), db.NewMailerUser(c.User), db.NewMailerRepo(c.Repo.Repository)) } c.Flash.Success(c.Tr("repo.settings.add_collaborator_success")) diff --git a/internal/route/user/auth.go b/internal/route/user/auth.go index e069d4df..5a7bd8e4 100644 --- a/internal/route/user/auth.go +++ b/internal/route/user/auth.go @@ -15,8 +15,8 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/db/errors" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" - "gogs.io/gogs/internal/mailer" "gogs.io/gogs/internal/tool" ) @@ -369,7 +369,7 @@ func SignUpPost(c *context.Context, cpt *captcha.Captcha, f form.Register) { // Send confirmation email, no need for social account. if conf.Service.RegisterEmailConfirm && u.ID > 1 { - mailer.SendActivateAccountMail(c.Context, db.NewMailerUser(u)) + email.SendActivateAccountMail(c.Context, db.NewMailerUser(u)) c.Data["IsSendRegisterMail"] = true c.Data["Email"] = u.Email c.Data["Hours"] = conf.Service.ActiveCodeLives / 60 @@ -398,7 +398,7 @@ func Activate(c *context.Context) { c.Data["ResendLimited"] = true } else { c.Data["Hours"] = conf.Service.ActiveCodeLives / 60 - mailer.SendActivateAccountMail(c.Context, db.NewMailerUser(c.User)) + email.SendActivateAccountMail(c.Context, db.NewMailerUser(c.User)) if err := c.Cache.Put(c.User.MailResendCacheKey(), 1, 180); err != nil { log.Error("Failed to put cache key 'mail resend': %v", err) @@ -457,7 +457,7 @@ func ActivateEmail(c *context.Context) { func ForgotPasswd(c *context.Context) { c.Title("auth.forgot_password") - if conf.MailService == nil { + if !conf.Email.Enabled { c.Data["IsResetDisable"] = true c.Success(FORGOT_PASSWORD) return @@ -470,16 +470,16 @@ func ForgotPasswd(c *context.Context) { func ForgotPasswdPost(c *context.Context) { c.Title("auth.forgot_password") - if conf.MailService == nil { + if !conf.Email.Enabled { c.Status(403) return } c.Data["IsResetRequest"] = true - email := c.Query("email") - c.Data["Email"] = email + emailAddr := c.Query("email") + c.Data["Email"] = emailAddr - u, err := db.GetUserByEmail(email) + u, err := db.GetUserByEmail(emailAddr) if err != nil { if errors.IsUserNotExist(err) { c.Data["Hours"] = conf.Service.ActiveCodeLives / 60 @@ -504,7 +504,7 @@ func ForgotPasswdPost(c *context.Context) { return } - mailer.SendResetPasswordMail(c.Context, db.NewMailerUser(u)) + email.SendResetPasswordMail(c.Context, db.NewMailerUser(u)) if err = c.Cache.Put(u.MailResendCacheKey(), 1, 180); err != nil { log.Error("Failed to put cache key 'mail resend': %v", err) } diff --git a/internal/route/user/setting.go b/internal/route/user/setting.go index 1ec2db95..064ebf74 100644 --- a/internal/route/user/setting.go +++ b/internal/route/user/setting.go @@ -22,8 +22,8 @@ import ( "gogs.io/gogs/internal/context" "gogs.io/gogs/internal/db" "gogs.io/gogs/internal/db/errors" + "gogs.io/gogs/internal/email" "gogs.io/gogs/internal/form" - "gogs.io/gogs/internal/mailer" "gogs.io/gogs/internal/tool" ) @@ -259,12 +259,12 @@ func SettingsEmailPost(c *context.Context, f form.AddEmail) { return } - email := &db.EmailAddress{ + emailAddr := &db.EmailAddress{ UID: c.User.ID, Email: f.Email, IsActivated: !conf.Service.RegisterEmailConfirm, } - if err := db.AddEmailAddress(email); err != nil { + if err := db.AddEmailAddress(emailAddr); err != nil { if db.IsErrEmailAlreadyUsed(err) { c.RenderWithErr(c.Tr("form.email_been_used"), SETTINGS_EMAILS, &f) } else { @@ -275,12 +275,12 @@ func SettingsEmailPost(c *context.Context, f form.AddEmail) { // Send confirmation email if conf.Service.RegisterEmailConfirm { - mailer.SendActivateEmailMail(c.Context, db.NewMailerUser(c.User), email.Email) + email.SendActivateEmailMail(c.Context, db.NewMailerUser(c.User), emailAddr.Email) if err := c.Cache.Put("MailResendLimit_"+c.User.LowerName, c.User.LowerName, 180); err != nil { log.Error("Set cache 'MailResendLimit' failed: %v", err) } - c.Flash.Info(c.Tr("settings.add_email_confirmation_sent", email.Email, conf.Service.ActiveCodeLives/60)) + c.Flash.Info(c.Tr("settings.add_email_confirmation_sent", emailAddr.Email, conf.Service.ActiveCodeLives/60)) } else { c.Flash.Success(c.Tr("settings.add_email_success")) } |