aboutsummaryrefslogtreecommitdiff
path: root/utils/email
diff options
context:
space:
mode:
Diffstat (limited to 'utils/email')
-rw-r--r--utils/email/email.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/utils/email/email.go b/utils/email/email.go
index 168da25..4877cd5 100644
--- a/utils/email/email.go
+++ b/utils/email/email.go
@@ -65,6 +65,40 @@ func SendVerificationEmail(user *models.User) error {
return SendMail(user.Email, subject, body.String())
}
+func SendForgotUsernameEmail(users *[]models.User) error {
+ tmpl, err := template.ParseFiles("templates/email/forgot_username.html")
+ if err != nil {
+ return fmt.Errorf("failed to parse email template: %w", err)
+ }
+ resetLink := fmt.Sprintf("%s%s?mode=password", config.Server.AppBaseURL, config.URL_FORGOT_PASSWORD)
+ var usernames string
+
+ for i, user := range *users {
+ usernames += user.Username
+ if i < len(*users)-1 {
+ usernames += ", "
+ }
+ }
+
+ data := struct {
+ Username string
+ Appname string
+ Link string
+ }{
+ Username: usernames,
+ Appname: config.Server.AppName,
+ Link: resetLink,
+ }
+
+ var body bytes.Buffer
+ if err := tmpl.Execute(&body, data); err != nil {
+ return fmt.Errorf("failed to execute email template: %w", err)
+ }
+
+ subject := fmt.Sprintf("Your username for %s", config.Server.AppName)
+ return SendMail((*users)[0].Email, subject, body.String())
+}
+
// func SendPasswordResetEmail(user *models.User) error {
// token, err := user.GenerateToken(database.DB, models.EmailTokenTypePasswordReset)
// if err != nil {