|
@@ -5,8 +5,13 @@
|
|
package mailer
|
|
package mailer
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "encoding/hex"
|
|
|
|
+ "fmt"
|
|
|
|
+
|
|
"github.com/gogits/gogs/models"
|
|
"github.com/gogits/gogs/models"
|
|
"github.com/gogits/gogs/modules/base"
|
|
"github.com/gogits/gogs/modules/base"
|
|
|
|
+ "github.com/gogits/gogs/modules/log"
|
|
|
|
+ "github.com/gogits/gogs/modules/middleware"
|
|
)
|
|
)
|
|
|
|
|
|
// Create New mail message use MailFrom and MailUser
|
|
// Create New mail message use MailFrom and MailUser
|
|
@@ -22,10 +27,62 @@ func GetMailTmplData(user *models.User) map[interface{}]interface{} {
|
|
data["AppVer"] = base.AppVer
|
|
data["AppVer"] = base.AppVer
|
|
data["AppUrl"] = base.AppUrl
|
|
data["AppUrl"] = base.AppUrl
|
|
data["AppLogo"] = base.AppLogo
|
|
data["AppLogo"] = base.AppLogo
|
|
- data["ActiveCodeLives"] = base.Service.ActiveCodeLives
|
|
|
|
- data["ResetPwdCodeLives"] = base.Service.ResetPwdCodeLives
|
|
|
|
|
|
+ data["ActiveCodeLives"] = base.Service.ActiveCodeLives / 60
|
|
|
|
+ data["ResetPwdCodeLives"] = base.Service.ResetPwdCodeLives / 60
|
|
if user != nil {
|
|
if user != nil {
|
|
data["User"] = user
|
|
data["User"] = user
|
|
}
|
|
}
|
|
return data
|
|
return data
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+// create a time limit code for user active
|
|
|
|
+func CreateUserActiveCode(user *models.User, startInf interface{}) string {
|
|
|
|
+ hours := base.Service.ActiveCodeLives / 60
|
|
|
|
+ data := base.ToStr(user.Id) + user.Email + user.LowerName + user.Passwd + user.Rands
|
|
|
|
+ code := base.CreateTimeLimitCode(data, hours, startInf)
|
|
|
|
+
|
|
|
|
+ // add tail hex username
|
|
|
|
+ code += hex.EncodeToString([]byte(user.LowerName))
|
|
|
|
+ return code
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Send user register mail with active code
|
|
|
|
+func SendRegisterMail(r *middleware.Render, user *models.User) {
|
|
|
|
+ code := CreateUserActiveCode(user, nil)
|
|
|
|
+ subject := "Register success, Welcome"
|
|
|
|
+
|
|
|
|
+ data := GetMailTmplData(user)
|
|
|
|
+ data["Code"] = code
|
|
|
|
+ body, err := r.HTMLString("mail/auth/register_success", data)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("mail.SendRegisterMail(fail to render): %v", err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ msg := NewMailMessage([]string{user.Email}, subject, body)
|
|
|
|
+ msg.Info = fmt.Sprintf("UID: %d, send register mail", user.Id)
|
|
|
|
+
|
|
|
|
+ // async send mail
|
|
|
|
+ SendAsync(msg)
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Send email verify active email.
|
|
|
|
+func SendActiveMail(r *middleware.Render, user *models.User) {
|
|
|
|
+ code := CreateUserActiveCode(user, nil)
|
|
|
|
+
|
|
|
|
+ subject := "Verify your email address"
|
|
|
|
+
|
|
|
|
+ data := GetMailTmplData(user)
|
|
|
|
+ data["Code"] = code
|
|
|
|
+ body, err := r.HTMLString("mail/auth/active_email.html", data)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("mail.SendActiveMail(fail to render): %v", err)
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ msg := NewMailMessage([]string{user.Email}, subject, body)
|
|
|
|
+ msg.Info = fmt.Sprintf("UID: %d, send email verify mail", user.Id)
|
|
|
|
+
|
|
|
|
+ // async send mail
|
|
|
|
+ SendAsync(msg)
|
|
|
|
+}
|