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,91 +342,83 @@ 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.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL})
subjectPage := utils.NewHTMLTemplate("welcome_subject", c.Locale) bodyPage := utils.NewHTMLTemplate("welcome_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.welcome_subject", map[string]interface{}{"TeamDisplayName": siteURL}) 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
bodyPage := utils.NewHTMLTemplate("welcome_body", c.Locale) if !verified {
bodyPage.Props["SiteURL"] = siteURL link := fmt.Sprintf("%s/do_verify_email?uid=%s&hid=%s&email=%s", siteURL, userId, model.HashPassword(userId), url.QueryEscape(email))
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)
}
}()
}
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)
}
var preferences model.Preferences
for id := range profiles {
if id == user.Id {
continue
}
profile := profiles[id]
preference := model.Preference{
UserId: user.Id,
Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
Name: profile.Id,
Value: "true",
}
preferences = append(preferences, preference)
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())
}
}()
}
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))
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["VerifyUrl"] = link
bodyPage.Props["Button"] = c.T("api.templates.verify_body.button") }
if err := utils.SendMail(userEmail, subjectPage.Render(), bodyPage.Render()); err != nil { if err := utils.SendMail(email, 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_welcome_email_and_forget.failed.error"), err)
}
}
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
for id := range profiles {
if id == user.Id {
continue
} }
}()
profile := profiles[id]
preference := model.Preference{
UserId: user.Id,
Category: model.PREFERENCE_CATEGORY_DIRECT_CHANNEL_SHOW,
Name: profile.Id,
Value: "true",
}
preferences = append(preferences, preference)
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())
}
}
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"]})
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)
}
} }
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,95 +1759,81 @@ 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.Props["Subject"] = c.T("api.templates.password_change_subject",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName})
subjectPage := utils.NewHTMLTemplate("password_change_subject", c.Locale) bodyPage := utils.NewHTMLTemplate("password_change_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.password_change_subject", bodyPage.Props["SiteURL"] = siteURL
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "SiteName": utils.Cfg.TeamSettings.SiteName}) 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) if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
bodyPage.Props["SiteURL"] = siteURL l4g.Error(utils.T("api.user.send_password_change_email_and_forget.error"), err)
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)
}
}()
} }
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.Props["Subject"] = c.T("api.templates.email_change_subject",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName})
subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName
subjectPage := utils.NewHTMLTemplate("email_change_subject", c.Locale) bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.email_change_subject", bodyPage.Props["SiteURL"] = siteURL
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName}) bodyPage.Props["Title"] = c.T("api.templates.email_change_body.title")
subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName bodyPage.Html["Info"] = template.HTML(c.T("api.templates.email_change_body.info",
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName, "NewEmail": newEmail}))
bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale) if err := utils.SendMail(oldEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
bodyPage.Props["SiteURL"] = siteURL l4g.Error(utils.T("api.user.send_email_change_email_and_forget.error"), err)
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) { 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.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) bodyPage := utils.NewHTMLTemplate("email_change_verify_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.email_change_verify_subject", bodyPage.Props["SiteURL"] = siteURL
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName}) bodyPage.Props["Title"] = c.T("api.templates.email_change_verify_body.title")
subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName 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) if err := utils.SendMail(newUserEmail, subjectPage.Render(), bodyPage.Render()); err != nil {
bodyPage.Props["SiteURL"] = siteURL l4g.Error(utils.T("api.user.send_email_change_verify_email_and_forget.error"), err)
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)
}
}()
} }
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.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) bodyPage := utils.NewHTMLTemplate("email_change_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.username_change_subject", bodyPage.Props["SiteURL"] = siteURL
map[string]interface{}{"TeamDisplayName": utils.Cfg.TeamSettings.SiteName}) bodyPage.Props["Title"] = c.T("api.templates.username_change_body.title")
subjectPage.Props["SiteName"] = utils.Cfg.TeamSettings.SiteName 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) if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
bodyPage.Props["SiteURL"] = siteURL l4g.Error(utils.T("api.user.send_email_change_username_and_forget.error"), err)
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)
}
}()
} }
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,24 +2188,20 @@ 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.Props["Subject"] = c.T("api.templates.singin_change_email.subject",
map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]})
subjectPage := utils.NewHTMLTemplate("signin_change_subject", c.Locale) bodyPage := utils.NewHTMLTemplate("signin_change_body", c.Locale)
subjectPage.Props["Subject"] = c.T("api.templates.singin_change_email.subject", bodyPage.Props["SiteURL"] = siteURL
map[string]interface{}{"SiteName": utils.ClientCfg["SiteName"]}) 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}))
bodyPage := utils.NewHTMLTemplate("signin_change_body", c.Locale) if err := utils.SendMail(email, subjectPage.Render(), bodyPage.Render()); err != nil {
bodyPage.Props["SiteURL"] = siteURL l4g.Error(utils.T("api.user.send_sign_in_change_email_and_forget.error"), err)
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) { 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())
} }
} }
} }