/
mail_forgot_password.go
67 lines (61 loc) · 2.21 KB
/
mail_forgot_password.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package mail
import (
"context"
"github.com/vilisseranen/castellers/common"
"github.com/vilisseranen/castellers/model"
)
type EmailForgotPasswordPayload struct {
Member model.Member `json:"member"`
Token string `json:"token"`
Credentials model.Credentials `json:"credentials"`
}
func SendForgotPasswordEmail(ctx context.Context, payload EmailForgotPasswordPayload) error {
ctx, span := tracer.Start(ctx, "mail.SendForgotPasswordEmail")
defer span.End()
resetLink := common.GetConfigString("domain") + "/reset?" +
"t=" + payload.Token
if payload.Credentials.Username != "" {
resetLink += "&u=" + payload.Credentials.Username + "&a=reset"
} else {
resetLink += "&a=activation"
}
profileLink := common.GetConfigString("domain") + "/memberEdit/" + payload.Member.UUID
email := emailInfo{}
email.Header = emailHeader{
Title: common.Translate("forgot_title", payload.Member.Language),
}
email.Top = emailTop{
Title: common.Translate("forgot_title", payload.Member.Language),
To: payload.Member.Email,
Subtitle: common.Translate("forgot_subject_info", payload.Member.Language),
}
email.MainSections = []emailMain{
{
Title: common.Translate("forgot_reset_not_requested_title", payload.Member.Language),
Text: common.Translate("forgot_reset_not_requested_text", payload.Member.Language),
},
{
Title: common.Translate("forgot_reset_requested_title", payload.Member.Language),
Text: common.Translate("forgot_reset_requested_text", payload.Member.Language),
},
}
email.Actions = []emailAction{{
Title: common.Translate("forgot_reset", payload.Member.Language),
Text: common.Translate("forgot_reset_text", payload.Member.Language),
Buttons: []Button{{
Text: common.Translate("forgot_reset", payload.Member.Language),
Link: resetLink},
},
}}
email.Bottom = emailBottom{
ProfileLink: profileLink,
MyProfile: common.Translate("email_my_profile", payload.Member.Language),
Suggestions: common.Translate("email_suggestions", payload.Member.Language),
}
email.ImageSource = common.GetConfigString("cdn") + "/static/img/"
if err := sendMail(ctx, email); err != nil {
common.Error("Error sending Email: " + err.Error())
return err
}
return nil
}