Move away from the "andForget" style of function (#3043)

As suggested by @crspeller here:
https://github.com/mattermost/platform/pull/3022#issuecomment-220004020
Этот коммит содержится в:
Thomas Balthazar
2016-05-18 17:14:55 +02:00
коммит произвёл Christopher Speller
родитель 880ef25ab1
Коммит d48be63513
2 изменённых файлов: 155 добавлений и 181 удалений

Просмотреть файл

@@ -636,5 +636,5 @@ func CompleteSwitchWithOAuth(c *Context, w http.ResponseWriter, r *http.Request,
return return
} }
sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), strings.Title(service)+" SSO") go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), strings.Title(service)+" SSO")
} }

Просмотреть файл

@@ -90,7 +90,7 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
hash := r.URL.Query().Get("h") hash := r.URL.Query().Get("h")
teamId := "" teamId := ""
var team *model.Team var team *model.Team
sendWelcomeEmail := true shouldSendWelcomeEmail := true
user.EmailVerified = false user.EmailVerified = false
if len(hash) > 0 { if len(hash) > 0 {
@@ -120,7 +120,7 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
user.Email = props["email"] user.Email = props["email"]
user.EmailVerified = true user.EmailVerified = true
sendWelcomeEmail = false shouldSendWelcomeEmail = false
} }
inviteId := r.URL.Query().Get("iid") inviteId := r.URL.Query().Get("iid")
@@ -170,11 +170,11 @@ func createUser(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
addDirectChannelsAndForget(team.Id, ruser) go addDirectChannels(team.Id, ruser)
} }
if sendWelcomeEmail { if shouldSendWelcomeEmail {
sendWelcomeEmailAndForget(c, ruser.Id, ruser.Email, c.GetSiteURL(), ruser.EmailVerified) go sendWelcomeEmail(c, ruser.Id, ruser.Email, c.GetSiteURL(), ruser.EmailVerified)
} }
w.Write([]byte(ruser.ToJson())) w.Write([]byte(ruser.ToJson()))
@@ -330,7 +330,7 @@ func CreateOAuthUser(c *Context, w http.ResponseWriter, r *http.Request, service
return nil return nil
} }
addDirectChannelsAndForget(team.Id, user) go addDirectChannels(team.Id, user)
} }
} }
@@ -342,9 +342,7 @@ func CreateOAuthUser(c *Context, w http.ResponseWriter, r *http.Request, service
return ruser return ruser
} }
func sendWelcomeEmailAndForget(c *Context, userId string, email string, siteURL string, verified bool) { func sendWelcomeEmail(c *Context, userId string, email string, siteURL string, verified bool) {
go func() {
subjectPage := utils.NewHTMLTemplate("welcome_subject", c.Locale) subjectPage := utils.NewHTMLTemplate("welcome_subject", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL}) subjectPage.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL})
@@ -365,11 +363,9 @@ func sendWelcomeEmailAndForget(c *Context, userId string, email string, siteURL
if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil { 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) l4g.Error(utils.T("api.user.send_welcome_email_and_forget.failed.error"), err)
} }
}()
} }
func addDirectChannelsAndForget(teamId string, user *model.User) { func addDirectChannels(teamId string, user *model.User) {
go func() {
var profiles map[string]*model.User var profiles map[string]*model.User
if result := <-Srv.Store.User().GetProfiles(teamId); result.Err != nil { 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()) l4g.Error(utils.T("api.user.add_direct_channels_and_forget.failed.error"), user.Id, teamId, result.Err.Error())
@@ -404,12 +400,9 @@ func addDirectChannelsAndForget(teamId string, user *model.User) {
if result := <-Srv.Store.Preference().Save(&preferences); result.Err != nil { 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()) 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) { func SendVerifyEmail(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)) 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 := utils.NewHTMLTemplate("verify_subject", c.Locale)
@@ -426,7 +419,6 @@ func SendVerifyEmailAndForget(c *Context, userId, userEmail, siteURL string) {
if err := utils.SendMail(userEmail, subjectPage.Render(), bodyPage.Render()); err != nil { 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) l4g.Error(utils.T("api.user.send_verify_email_and_forget.failed.error"), err)
} }
}()
} }
func login(c *Context, w http.ResponseWriter, r *http.Request) { 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) rusers := result.Data.([2]*model.User)
if rusers[0].Email != rusers[1].Email { 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 { 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 { 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 = "" rusers[0].Password = ""
@@ -1365,7 +1357,7 @@ func updatePassword(c *Context, w http.ResponseWriter, r *http.Request) {
} else { } else {
c.LogAudit("completed") 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 := make(map[string]string)
data["user_id"] = uresult.Data.(string) data["user_id"] = uresult.Data.(string)
@@ -1767,14 +1759,12 @@ func ResetPassword(c *Context, userId, newPassword string) *model.AppError {
return result.Err 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 return nil
} }
func sendPasswordChangeEmailAndForget(c *Context, email, siteURL, method string) { func sendPasswordChangeEmail(c *Context, email, siteURL, method string) {
go func() {
subjectPage := utils.NewHTMLTemplate("password_change_subject", c.Locale) subjectPage := utils.NewHTMLTemplate("password_change_subject", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.password_change_subject", subjectPage.Props["Subject"] = c.T("api.templates.password_change_subject",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName}) map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName})
@@ -1788,13 +1778,9 @@ func sendPasswordChangeEmailAndForget(c *Context, email, siteURL, method string)
if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil { 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) l4g.Error(utils.T("api.user.send_password_change_email_and_forget.error"), err)
} }
}()
} }
func sendEmailChangeEmailAndForget(c *Context, oldEmail, newEmail, siteURL string) { func sendEmailChangeEmail(c *Context, oldEmail, newEmail, siteURL string) {
go func() {
subjectPage := utils.NewHTMLTemplate("email_change_subject", c.Locale) subjectPage := utils.NewHTMLTemplate("email_change_subject", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.email_change_subject", subjectPage.Props["Subject"] = c.T("api.templates.email_change_subject",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName}) map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
@@ -1809,13 +1795,9 @@ func sendEmailChangeEmailAndForget(c *Context, oldEmail, newEmail, siteURL strin
if err := utils.SendMail(oldEmail, subjectPage.Render(), bodyPage.Render()); err != nil { 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) l4g.Error(utils.T("api.user.send_email_change_email_and_forget.error"), err)
} }
}()
} }
func SendEmailChangeVerifyEmailAndForget(c *Context, userId, newUserEmail, siteURL string) { func SendEmailChangeVerifyEmail(c *Context, userId, newUserEmail, siteURL string) {
go func() {
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 := utils.NewHTMLTemplate("email_change_verify_subject", c.Locale)
@@ -1834,12 +1816,9 @@ func SendEmailChangeVerifyEmailAndForget(c *Context, userId, newUserEmail, siteU
if err := utils.SendMail(newUserEmail, subjectPage.Render(), bodyPage.Render()); err != nil { 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) l4g.Error(utils.T("api.user.send_email_change_verify_email_and_forget.error"), err)
} }
}()
} }
func sendEmailChangeUsernameAndForget(c *Context, oldUsername, newUsername, email, siteURL string) { func sendEmailChangeUsername(c *Context, oldUsername, newUsername, email, siteURL string) {
go func() {
subjectPage := utils.NewHTMLTemplate("username_change_subject", c.Locale) subjectPage := utils.NewHTMLTemplate("username_change_subject", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.username_change_subject", subjectPage.Props["Subject"] = c.T("api.templates.username_change_subject",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName}) map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
@@ -1855,7 +1834,6 @@ func sendEmailChangeUsernameAndForget(c *Context, oldUsername, newUsername, emai
l4g.Error(utils.T("api.user.send_email_change_username_and_forget.error"), err) l4g.Error(utils.T("api.user.send_email_change_username_and_forget.error"), err)
} }
}()
} }
func updateUserNotify(c *Context, w http.ResponseWriter, r *http.Request) { 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 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) RevokeAllSession(c, c.Session.UserId)
if c.Err != nil { if c.Err != nil {
@@ -2131,7 +2109,7 @@ func emailToLdap(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
sendSignInChangeEmailAndForget(c, user.Email, c.GetSiteURL(), "LDAP") go sendSignInChangeEmail(c, user.Email, c.GetSiteURL(), "LDAP")
m := map[string]string{} m := map[string]string{}
m["follow_link"] = "/login?extra=signin_change" m["follow_link"] = "/login?extra=signin_change"
@@ -2201,7 +2179,7 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
return 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 := map[string]string{}
m["follow_link"] = "/login?extra=signin_change" m["follow_link"] = "/login?extra=signin_change"
@@ -2210,9 +2188,7 @@ func ldapToEmail(c *Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte(model.MapToJson(m))) w.Write([]byte(model.MapToJson(m)))
} }
func sendSignInChangeEmailAndForget(c *Context, email, siteURL, method string) { func sendSignInChangeEmail(c *Context, email, siteURL, method string) {
go func() {
subjectPage := utils.NewHTMLTemplate("signin_change_subject", c.Locale) subjectPage := utils.NewHTMLTemplate("signin_change_subject", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.singin_change_email.subject", subjectPage.Props["Subject"] = c.T("api.templates.singin_change_email.subject",
map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]}) map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
@@ -2226,8 +2202,6 @@ func sendSignInChangeEmailAndForget(c *Context, email, siteURL, method string) {
if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil { 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) 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) { 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) user := result.Data.(*model.User)
if user.LastActivityAt > 0 { if user.LastActivityAt > 0 {
SendEmailChangeVerifyEmailAndForget(c, user.Id, user.Email, c.GetSiteURL()) go SendEmailChangeVerifyEmail(c, user.Id, user.Email, c.GetSiteURL())
} else { } else {
SendVerifyEmailAndForget(c, user.Id, user.Email, c.GetSiteURL()) go SendVerifyEmail(c, user.Id, user.Email, c.GetSiteURL())
} }
} }
} }