summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Balthazar <tbalthazar@users.noreply.github.com>2016-05-18 17:14:55 +0200
committerChristopher Speller <crspeller@gmail.com>2016-05-18 11:14:55 -0400
commitd48be63513ec083c3073df5b7c50525d18bf0181 (patch)
treeadc0fd893ebed89008acf861473bc16aca2d7b06
parent880ef25ab1355c9f04ce87378d52cfb58f484486 (diff)
downloadchat-d48be63513ec083c3073df5b7c50525d18bf0181.tar.gz
chat-d48be63513ec083c3073df5b7c50525d18bf0181.tar.bz2
chat-d48be63513ec083c3073df5b7c50525d18bf0181.zip
Move away from the "andForget" style of function (#3043)
As suggested by @crspeller here: https://github.com/mattermost/platform/pull/3022#issuecomment-220004020
-rw-r--r--api/oauth.go2
-rw-r--r--api/user.go312
2 files changed, 144 insertions, 170 deletions
diff --git a/api/oauth.go b/api/oauth.go
index 37ca5ce0a..30efbdce3 100644
--- a/api/oauth.go
+++ b/api/oauth.go
@@ -636,5 +636,5 @@ func CompleteSwitchWithOAuth(c *Context, w http.ResponseWriter, r *http.Request,
return
}
- sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), strings.Title(service)+" SSO")
+ go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), strings.Title(service)+" SSO")
}
diff --git a/api/user.go b/api/user.go
index da94a0ff5..34e6c01af 100644
--- a/api/user.go
+++ b/api/user.go
@@ -90,7 +90,7 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
hash := r.URL.Query().Get("h")
teamId := ""
var team *model.Team
- sendWelcomeEmail := true
+ shouldSendWelcomeEmail := true
user.EmailVerified = false
if len(hash) > 0 {
@@ -120,7 +120,7 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
user.Email = props["email"]
user.EmailVerified = true
- sendWelcomeEmail = false
+ shouldSendWelcomeEmail = false
}
inviteId := r.URL.Query().Get("iid")
@@ -170,11 +170,11 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- addDirectChannelsAndForget(team.Id, ruser)
+ go addDirectChannels(team.Id, ruser)
}
- if sendWelcomeEmail {
- sendWelcomeEmailAndForget(c, ruser.Id, ruser.Email, c.GetSiteURL(), ruser.EmailVerified)
+ if shouldSendWelcomeEmail {
+ go sendWelcomeEmail(c, ruser.Id, ruser.Email, c.GetSiteURL(), ruser.EmailVerified)
}
w.Write([]byte(ruser.ToJson()))
@@ -330,7 +330,7 @@ func CreateOAuthUser(c *Context, w http.ResponseWriter, r *http.Request, service
return nil
}
- addDirectChannelsAndForget(team.Id, user)
+ go addDirectChannels(team.Id, user)
}
}
@@ -342,91 +342,83 @@ func CreateOAuthUser(c *Context, w http.ResponseWriter, r *http.Request, service
return ruser
}
-func sendWelcomeEmailAndForget(c *Context, userId string, email string, siteURL string, verified bool) {
- go func() {
-
- subjectPage := utils.NewHTMLTemplate("welcome_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL})
-
- bodyPage := utils.NewHTMLTemplate("welcome_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.welcome_body.title", map[string]interface{}{"TeamDisplayName": siteURL})
- bodyPage.Props["Info"] = c.T("api.templates.welcome_body.info")
- bodyPage.Props["Button"] = c.T("api.templates.welcome_body.button")
- bodyPage.Props["Info2"] = c.T("api.templates.welcome_body.info2")
- bodyPage.Props["Info3"] = c.T("api.templates.welcome_body.info3")
- bodyPage.Props["TeamURL"] = siteURL
-
- if !verified {
- link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(email))
- bodyPage.Props["VerifyUrl"] = link
- }
+func sendWelcomeEmail(c *Context, userId string, email string, siteURL string, verified bool) {
+ subjectPage := utils.NewHTMLTemplate("welcome_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL})
+
+ bodyPage := utils.NewHTMLTemplate("welcome_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.welcome_body.title", map[string]interface{}{"TeamDisplayName": siteURL})
+ bodyPage.Props["Info"] = c.T("api.templates.welcome_body.info")
+ bodyPage.Props["Button"] = c.T("api.templates.welcome_body.button")
+ bodyPage.Props["Info2"] = c.T("api.templates.welcome_body.info2")
+ bodyPage.Props["Info3"] = c.T("api.templates.welcome_body.info3")
+ bodyPage.Props["TeamURL"] = siteURL
+
+ if !verified {
+ link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(email))
+ bodyPage.Props["VerifyUrl"] = link
+ }
- if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_welcome_email_and_forget.failed.error"), err)
- }
- }()
+ if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_welcome_email_and_forget.failed.error"), err)
+ }
}
-func addDirectChannelsAndForget(teamId string, user *model.User) {
- go func() {
- var profiles map[string]*model.User
- if result := <-Srv.Store.User().GetProfiles(teamId); result.Err != nil {
- l4g.Error(utils.T("api.user.add_direct_channels_and_forget.failed.error"), user.Id, teamId, result.Err.Error())
- return
- } else {
- profiles = result.Data.(map[string]*model.User)
- }
+func addDirectChannels(teamId string, user *model.User) {
+ var profiles map[string]*model.User
+ if result := <-Srv.Store.User().GetProfiles(teamId); result.Err != nil {
+ l4g.Error(utils.T("api.user.add_direct_channels_and_forget.failed.error"), user.Id, teamId, result.Err.Error())
+ return
+ } else {
+ profiles = result.Data.(map[string]*model.User)
+ }
- var preferences model.Preferences
+ var preferences model.Preferences
- for id := range profiles {
- if id == user.Id {
- continue
- }
+ for id := range profiles {
+ if id == user.Id {
+ continue
+ }
- profile := profiles[id]
+ profile := profiles[id]
- preference := model.Preference{
- UserId: user.Id,
- Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
- Name: profile.Id,
- Value: "true",
- }
+ preference := model.Preference{
+ UserId: user.Id,
+ Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
+ Name: profile.Id,
+ Value: "true",
+ }
- preferences = append(preferences, preference)
+ preferences = append(preferences, preference)
- if len(preferences) >= 10 {
- break
- }
+ if len(preferences) >= 10 {
+ break
}
+ }
- if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
- l4g.Error(utils.T("api.user.add_direct_channels_and_forget.failed.error"), user.Id, teamId, result.Err.Error())
- }
- }()
+ if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil {
+ l4g.Error(utils.T("api.user.add_direct_channels_and_forget.failed.error"), user.Id, teamId, result.Err.Error())
+ }
}
-func SendVerifyEmailAndForget(c *Context, userId, userEmail, siteURL string) {
- go func() {
-
- link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(userEmail))
+func SendVerifyEmail(c *Context, userId, userEmail, siteURL string) {
+ link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(userEmail))
- subjectPage := utils.NewHTMLTemplate("verify_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.verify_subject",
- map[string]interface{}{"TeamDisplayName": utils.ClientCfg["SiteName"], "SiteName": utils.ClientCfg["SiteName"]})
+ subjectPage := utils.NewHTMLTemplate("verify_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.verify_subject",
+ map[string]interface{}{"TeamDisplayName": utils.ClientCfg["SiteName"], "SiteName": utils.ClientCfg["SiteName"]})
- bodyPage := utils.NewHTMLTemplate("verify_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.verify_body.title", map[string]interface{}{"TeamDisplayName": utils.ClientCfg["SiteName"]})
- bodyPage.Props["Info"] = c.T("api.templates.verify_body.info")
- bodyPage.Props["VerifyUrl"] = link
- bodyPage.Props["Button"] = c.T("api.templates.verify_body.button")
+ bodyPage := utils.NewHTMLTemplate("verify_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.verify_body.title", map[string]interface{}{"TeamDisplayName": utils.ClientCfg["SiteName"]})
+ bodyPage.Props["Info"] = c.T("api.templates.verify_body.info")
+ bodyPage.Props["VerifyUrl"] = link
+ bodyPage.Props["Button"] = c.T("api.templates.verify_body.button")
- if err := utils.SendMail(userEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_verify_email_and_forget.failed.error"), err)
- }
- }()
+ if err := utils.SendMail(userEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_verify_email_and_forget.failed.error"), err)
+ }
}
func login(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -1285,15 +1277,15 @@ func updateUser(c *Context, w http.ResponseWriter, r *http.Request) {
rusers := result.Data.([2]*model.User)
if rusers[0].Email != rusers[1].Email {
- sendEmailChangeEmailAndForget(c, rusers[1].Email, rusers[0].Email, c.GetSiteURL())
+ go sendEmailChangeEmail(c, rusers[1].Email, rusers[0].Email, c.GetSiteURL())
if utils.Cfg.EmailSettings.RequireEmailVerification {
- SendEmailChangeVerifyEmailAndForget(c, rusers[0].Id, rusers[0].Email, c.GetSiteURL())
+ go SendEmailChangeVerifyEmail(c, rusers[0].Id, rusers[0].Email, c.GetSiteURL())
}
}
if rusers[0].Username != rusers[1].Username {
- sendEmailChangeUsernameAndForget(c, rusers[1].Username, rusers[0].Username, rusers[0].Email, c.GetSiteURL())
+ go sendEmailChangeUsername(c, rusers[1].Username, rusers[0].Username, rusers[0].Email, c.GetSiteURL())
}
rusers[0].Password = ""
@@ -1365,7 +1357,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
} else {
c.LogAudit("completed")
- sendPasswordChangeEmailAndForget(c, user.Email, c.GetSiteURL(), c.T("api.user.update_password.menu"))
+ go sendPasswordChangeEmail(c, user.Email, c.GetSiteURL(), c.T("api.user.update_password.menu"))
data := make(map[string]string)
data["user_id"] = uresult.Data.(string)
@@ -1767,95 +1759,81 @@ func ResetPassword(c *Context, userId, newPassword string) *model.AppError {
return result.Err
}
- sendPasswordChangeEmailAndForget(c, user.Email, c.GetSiteURL(), c.T("api.user.reset_password.method"))
+ go sendPasswordChangeEmail(c, user.Email, c.GetSiteURL(), c.T("api.user.reset_password.method"))
return nil
}
-func sendPasswordChangeEmailAndForget(c *Context, email, siteURL, method string) {
- go func() {
-
- subjectPage := utils.NewHTMLTemplate("password_change_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.password_change_subject",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName})
+func sendPasswordChangeEmail(c *Context, email, siteURL, method string) {
+ subjectPage := utils.NewHTMLTemplate("password_change_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.password_change_subject",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName})
- bodyPage := utils.NewHTMLTemplate("password_change_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.password_change_body.title")
- bodyPage.Html["Info"] = template.HTML(c.T("api.templates.password_change_body.info",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "TeamURL": siteURL, "Method": method}))
+ bodyPage := utils.NewHTMLTemplate("password_change_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.password_change_body.title")
+ bodyPage.Html["Info"] = template.HTML(c.T("api.templates.password_change_body.info",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "TeamURL": siteURL, "Method": method}))
- if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_password_change_email_and_forget.error"), err)
- }
-
- }()
+ if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_password_change_email_and_forget.error"), err)
+ }
}
-func sendEmailChangeEmailAndForget(c *Context, oldEmail, newEmail, siteURL string) {
- go func() {
-
- subjectPage := utils.NewHTMLTemplate("email_change_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.email_change_subject",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
- subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
-
- bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.email_change_body.title")
- bodyPage.Html["Info"] = template.HTML(c.T("api.templates.email_change_body.info",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "NewEmail": newEmail}))
+func sendEmailChangeEmail(c *Context, oldEmail, newEmail, siteURL string) {
+ subjectPage := utils.NewHTMLTemplate("email_change_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.email_change_subject",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
+ subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
- if err := utils.SendMail(oldEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_email_change_email_and_forget.error"), err)
- }
+ bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.email_change_body.title")
+ bodyPage.Html["Info"] = template.HTML(c.T("api.templates.email_change_body.info",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "NewEmail": newEmail}))
- }()
+ if err := utils.SendMail(oldEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_email_change_email_and_forget.error"), err)
+ }
}
-func SendEmailChangeVerifyEmailAndForget(c *Context, userId, newUserEmail, siteURL string) {
- go func() {
+func SendEmailChangeVerifyEmail(c *Context, userId, newUserEmail, siteURL string) {
+ link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(newUserEmail))
- link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(newUserEmail))
+ subjectPage := utils.NewHTMLTemplate("email_change_verify_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.email_change_verify_subject",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
+ subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
- subjectPage := utils.NewHTMLTemplate("email_change_verify_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.email_change_verify_subject",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
- subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
+ bodyPage := utils.NewHTMLTemplate("email_change_verify_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.email_change_verify_body.title")
+ bodyPage.Props["Info"] = c.T("api.templates.email_change_verify_body.info",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
+ bodyPage.Props["VerifyUrl"] = link
+ bodyPage.Props["VerifyButton"] = c.T("api.templates.email_change_verify_body.button")
- bodyPage := utils.NewHTMLTemplate("email_change_verify_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.email_change_verify_body.title")
- bodyPage.Props["Info"] = c.T("api.templates.email_change_verify_body.info",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
- bodyPage.Props["VerifyUrl"] = link
- bodyPage.Props["VerifyButton"] = c.T("api.templates.email_change_verify_body.button")
-
- if err := utils.SendMail(newUserEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_email_change_verify_email_and_forget.error"), err)
- }
- }()
+ if err := utils.SendMail(newUserEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_email_change_verify_email_and_forget.error"), err)
+ }
}
-func sendEmailChangeUsernameAndForget(c *Context, oldUsername, newUsername, email, siteURL string) {
- go func() {
+func sendEmailChangeUsername(c *Context, oldUsername, newUsername, email, siteURL string) {
+ subjectPage := utils.NewHTMLTemplate("username_change_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.username_change_subject",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
+ subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
- subjectPage := utils.NewHTMLTemplate("username_change_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.username_change_subject",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
- subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
+ bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.username_change_body.title")
+ bodyPage.Html["Info"] = template.HTML(c.T("api.templates.username_change_body.info",
+ map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "NewUsername": newUsername}))
- bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.username_change_body.title")
- bodyPage.Html["Info"] = template.HTML(c.T("api.templates.username_change_body.info",
- map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "NewUsername": newUsername}))
-
- if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_email_change_username_and_forget.error"), err)
- }
+ if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_email_change_username_and_forget.error"), err)
+ }
- }()
}
func updateUserNotify(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -2055,7 +2033,7 @@ func oauthToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), c.T("api.templates.signin_change_email.body.method_email"))
+ go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), c.T("api.templates.signin_change_email.body.method_email"))
RevokeAllSession(c, c.Session.UserId)
if c.Err != nil {
@@ -2131,7 +2109,7 @@ func emailToLdap(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), "LDAP")
+ go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), "LDAP")
m := map[string]string{}
m["follow_link"] = "/login?extra=signin_change"
@@ -2201,7 +2179,7 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
- sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), c.T("api.templates.signin_change_email.body.method_email"))
+ go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), c.T("api.templates.signin_change_email.body.method_email"))
m := map[string]string{}
m["follow_link"] = "/login?extra=signin_change"
@@ -2210,24 +2188,20 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte(model.MapToJson(m)))
}
-func sendSignInChangeEmailAndForget(c *Context, email, siteURL, method string) {
- go func() {
-
- subjectPage := utils.NewHTMLTemplate("signin_change_subject", c.Locale)
- subjectPage.Props["Subject"] = c.T("api.templates.singin_change_email.subject",
- map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
-
- bodyPage := utils.NewHTMLTemplate("signin_change_body", c.Locale)
- bodyPage.Props["SiteURL"] = siteURL
- bodyPage.Props["Title"] = c.T("api.templates.signin_change_email.body.title")
- bodyPage.Html["Info"] = template.HTML(c.T("api.templates.singin_change_email.body.info",
- map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"], "Method": method}))
+func sendSignInChangeEmail(c *Context, email, siteURL, method string) {
+ subjectPage := utils.NewHTMLTemplate("signin_change_subject", c.Locale)
+ subjectPage.Props["Subject"] = c.T("api.templates.singin_change_email.subject",
+ map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
- if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
- l4g.Error(utils.T("api.user.send_sign_in_change_email_and_forget.error"), err)
- }
+ bodyPage := utils.NewHTMLTemplate("signin_change_body", c.Locale)
+ bodyPage.Props["SiteURL"] = siteURL
+ bodyPage.Props["Title"] = c.T("api.templates.signin_change_email.body.title")
+ bodyPage.Html["Info"] = template.HTML(c.T("api.templates.singin_change_email.body.info",
+ map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"], "Method": method}))
- }()
+ if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
+ l4g.Error(utils.T("api.user.send_sign_in_change_email_and_forget.error"), err)
+ }
}
func verifyEmail(c *Context, w http.ResponseWriter, r *http.Request) {
@@ -2274,9 +2248,9 @@ func resendVerification(c *Context, w http.ResponseWriter, r *http.Request) {
user := result.Data.(*model.User)
if user.LastActivityAt > 0 {
- SendEmailChangeVerifyEmailAndForget(c, user.Id, user.Email, c.GetSiteURL())
+ go SendEmailChangeVerifyEmail(c, user.Id, user.Email, c.GetSiteURL())
} else {
- SendVerifyEmailAndForget(c, user.Id, user.Email, c.GetSiteURL())
+ go SendVerifyEmail(c, user.Id, user.Email, c.GetSiteURL())
}
}
}