]> source.dussan.org Git - gitea.git/commitdiff
Add register mail tpl
authorUnknown <joe2010xtmf@163.com>
Wed, 19 Mar 2014 14:46:48 +0000 (10:46 -0400)
committerUnknown <joe2010xtmf@163.com>
Wed, 19 Mar 2014 14:46:48 +0000 (10:46 -0400)
modules/auth/mail.go [deleted file]
modules/base/conf.go
modules/base/tool.go
modules/mailer/mail.go
routers/user/user.go
templates/mail/auth/active_email.html [new file with mode: 0644]
templates/mail/auth/register_success.tmpl [new file with mode: 0644]
templates/mail/auth/reset_password.html [new file with mode: 0644]
templates/mail/base.html [new file with mode: 0644]
templates/user/active.tmpl

diff --git a/modules/auth/mail.go b/modules/auth/mail.go
deleted file mode 100644 (file)
index 3de18b6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2014 The Gogs Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package auth
-
-import (
-       "encoding/hex"
-       "fmt"
-
-       "github.com/gogits/gogs/models"
-       "github.com/gogits/gogs/modules/base"
-       "github.com/gogits/gogs/modules/mailer"
-)
-
-// 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(user *models.User) {
-       code := CreateUserActiveCode(user, nil)
-       subject := "Register success, Welcome"
-
-       data := mailer.GetMailTmplData(user)
-       data["Code"] = code
-       body := base.RenderTemplate("mail/auth/register_success.html", data)
-
-       msg := mailer.NewMailMessage([]string{user.Email}, subject, body)
-       msg.Info = fmt.Sprintf("UID: %d, send register mail", user.Id)
-
-       // async send mail
-       mailer.SendAsync(msg)
-}
-
-// Send email verify active email.
-func SendActiveMail(user *models.User) {
-       code := CreateUserActiveCode(user, nil)
-
-       subject := "Verify your email address"
-
-       data := mailer.GetMailTmplData(user)
-       data["Code"] = code
-       body := base.RenderTemplate("mail/auth/active_email.html", data)
-
-       msg := mailer.NewMailMessage([]string{user.Email}, subject, body)
-       msg.Info = fmt.Sprintf("UID: %d, send email verify mail", user.Id)
-
-       // async send mail
-       mailer.SendAsync(msg)
-}
index 24ee1d7f069286ccddc6b031f7247325c36b8b80..64c97028b9a2b72b26e1a081e7fd36eb7e4c86a5 100644 (file)
@@ -174,6 +174,7 @@ func init() {
        SecretKey = Cfg.MustValue("security", "SECRET_KEY")
 
        // Extensions.
+       newService()
        newLogService()
        newMailService()
        newRegisterService()
index fc3b4c45b8c51d8cdb47a68e3b74205fa969000a..d0b6bfbfda1575b0a7921c082741d96f24d3f811 100644 (file)
@@ -67,25 +67,6 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
        return code
 }
 
-// TODO:
-func RenderTemplate(TplNames string, Data map[interface{}]interface{}) string {
-       // if beego.RunMode == "dev" {
-       //      beego.BuildTemplate(beego.ViewsPath)
-       // }
-
-       // ibytes := bytes.NewBufferString("")
-       // if _, ok := beego.BeeTemplates[TplNames]; !ok {
-       //      panic("can't find templatefile in the path:" + TplNames)
-       // }
-       // err := beego.BeeTemplates[TplNames].ExecuteTemplate(ibytes, TplNames, Data)
-       // if err != nil {
-       //      beego.Trace("template Execute err:", err)
-       // }
-       // icontent, _ := ioutil.ReadAll(ibytes)
-       // return string(icontent)
-       return "not implement yet"
-}
-
 // AvatarLink returns avatar link by given e-mail.
 func AvatarLink(email string) string {
        return "http://1.gravatar.com/avatar/" + EncodeMd5(email)
index cc4fd6d0592d3e05bedda24ac9f2950a5d9a506f..de4f24a47dab2c4df616123503ab35550cf05d44 100644 (file)
@@ -5,8 +5,13 @@
 package mailer
 
 import (
+       "encoding/hex"
+       "fmt"
+
        "github.com/gogits/gogs/models"
        "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
@@ -22,10 +27,62 @@ func GetMailTmplData(user *models.User) map[interface{}]interface{} {
        data["AppVer"] = base.AppVer
        data["AppUrl"] = base.AppUrl
        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 {
                data["User"] = user
        }
        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)
+}
index 42030076d230b2e0d0e93dc2b7c130628c831699..52b75f661d2be35257672a15bcc76d3c6a230fea 100644 (file)
@@ -14,6 +14,7 @@ import (
        "github.com/gogits/gogs/modules/auth"
        "github.com/gogits/gogs/modules/base"
        "github.com/gogits/gogs/modules/log"
+       "github.com/gogits/gogs/modules/mailer"
        "github.com/gogits/gogs/modules/middleware"
 )
 
@@ -152,7 +153,12 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) {
 
        // Send confirmation e-mail.
        if base.Service.RegisterEmailConfirm {
-               auth.SendRegisterMail(u)
+               mailer.SendRegisterMail(ctx.Render, u)
+               ctx.Data["IsSendRegisterMail"] = true
+               ctx.Data["Email"] = u.Email
+               ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
+               ctx.Render.HTML(200, "user/active", ctx.Data)
+               return
        }
        ctx.Redirect("/user/login")
 }
@@ -228,7 +234,8 @@ func Activate(ctx *middleware.Context) {
                ctx.Data["IsActivatePage"] = true
                // Resend confirmation e-mail.
                if base.Service.RegisterEmailConfirm {
-                       auth.SendRegisterMail(ctx.User)
+                       ctx.Data["Hours"] = base.Service.ActiveCodeLives / 60
+                       mailer.SendActiveMail(ctx.Render, ctx.User)
                } else {
                        ctx.Data["ServiceNotEnabled"] = true
                }
diff --git a/templates/mail/auth/active_email.html b/templates/mail/auth/active_email.html
new file mode 100644 (file)
index 0000000..ccb1202
--- /dev/null
@@ -0,0 +1,25 @@
+{{template "mail/base.html" .}}
+{{define "title"}}
+       {{if eq .Lang "zh-CN"}}
+                {{.User.NickName}},激活你的账户
+       {{end}}
+       {{if eq .Lang "en-US"}}
+                {{.User.NickName}}, please active your account
+       {{end}}
+{{end}}
+{{define "body"}}
+       {{if eq .Lang "zh-CN"}}
+               <p style="margin:0;padding:0 0 9px 0;">点击链接验证email,{{.ActiveCodeLives}} 分钟内有效</p>
+               <p style="margin:0;padding:0 0 9px 0;">
+                       <a href="{{.AppUrl}}active/{{.Code}}">{{.AppUrl}}active/{{.Code}}</a>
+               </p>
+               <p style="margin:0;padding:0 0 9px 0;">如果链接点击无反应,请复制到浏览器打开。</p>
+       {{end}}
+       {{if eq .Lang "en-US"}}
+               <p style="margin:0;padding:0 0 9px 0;">Please click following link to verify your e-mail in {{.ActiveCodeLives}} hours</p>
+               <p style="margin:0;padding:0 0 9px 0;">
+                       <a href="{{.AppUrl}}active/{{.Code}}">{{.AppUrl}}active/{{.Code}}</a>
+               </p>
+               <p style="margin:0;padding:0 0 9px 0;">Copy and paste it to your browser if it's not working.</p>
+       {{end}}
+{{end}}
\ No newline at end of file
diff --git a/templates/mail/auth/register_success.tmpl b/templates/mail/auth/register_success.tmpl
new file mode 100644 (file)
index 0000000..83c0855
--- /dev/null
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>{{.User.Name}}, welcome to {{.AppName}}</title>
+</head>
+<body style="background:#eee;">
+<div style="color:#555; font:12px/1.5 Tahoma,Arial,sans-serif;; text-shadow:1px 1px #fff; padding:0; margin:0;">
+    <div style="width:600px;margin:0 auto; padding:40px 0 20px;">
+        <div style="border:1px solid #d9d9d9;border-radius:3px; background:#fff; box-shadow: 0px 2px 5px rgba(0, 0, 0,.05); -webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0,.05);">
+            <div style="padding: 20px 15px;">
+                <h1 style="font-size:20px; padding:10px 0 20px; margin:0; border-bottom:1px solid #ddd;"><a style="color:#333;text-decoration:none;" target="_blank" href="{{.AppUrl}}">{{.AppName}}</a></h1>
+                <div style="padding:40px 15px;">
+                    <div style="font-size:16px; padding-bottom:30px; font-weight:bold;">
+                        {{.User.Name}}, welcome to {{.AppName}}
+                    </div>
+                    <div style="font-size:14px; padding:0 15px;">
+                                               <p style="margin:0;padding:0 0 9px 0;">Please click following link to verify your e-mail in {{.ActiveCodeLives}} hours</p>
+                                               <p style="margin:0;padding:0 0 9px 0;">
+                                                       <a href="{{.AppUrl}}activate/code={{.Code}}">{{.AppUrl}}active/{{.Code}}</a>
+                                               </p>
+                                               <p style="margin:0;padding:0 0 9px 0;">Copy and paste it to your browser if it's not working.</p>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div style="color:#aaa;padding:10px;text-align:center;">
+            © 2014 <a style="color:#888;text-decoration:none;" target="_blank" href="{{.AppUrl}}">{{AppName}}</a>
+        </div>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/templates/mail/auth/reset_password.html b/templates/mail/auth/reset_password.html
new file mode 100644 (file)
index 0000000..40a9efa
--- /dev/null
@@ -0,0 +1,25 @@
+{{template "mail/base.html" .}}
+{{define "title"}}
+       {{if eq .Lang "zh-CN"}}
+                {{.User.NickName}},重置账户密码
+       {{end}}
+       {{if eq .Lang "en-US"}}
+               {{.User.NickName}}, reset your password
+       {{end}}
+{{end}}
+{{define "body"}}
+       {{if eq .Lang "zh-CN"}}
+               <p style="margin:0;padding:0 0 9px 0;">点击链接重置密码,{{.ResetPwdCodeLives}} 分钟内有效</p>
+               <p style="margin:0;padding:0 0 9px 0;">
+                       <a href="{{.AppUrl}}reset/{{.Code}}">{{.AppUrl}}reset/{{.Code}}</a>
+               </p>
+               <p style="margin:0;padding:0 0 9px 0;">如果链接点击无反应,请复制到浏览器打开。</p>
+       {{end}}
+       {{if eq .Lang "en-US"}}
+               <p style="margin:0;padding:0 0 9px 0;">Please click following link to reset your password in {{.ResetPwdCodeLives}} hours</p>
+               <p style="margin:0;padding:0 0 9px 0;">
+                       <a href="{{.AppUrl}}reset/{{.Code}}">{{.AppUrl}}reset/{{.Code}}</a>
+               </p>
+               <p style="margin:0;padding:0 0 9px 0;">Copy and paste it to your browser if it's not working.</p>
+       {{end}}
+{{end}}
\ No newline at end of file
diff --git a/templates/mail/base.html b/templates/mail/base.html
new file mode 100644 (file)
index 0000000..e86c2ad
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>{{.Title}} - {{AppName}}</title>
+</head>
+<body style="background:#eee;">
+<div style="color:#555; font:12px/1.5 Tahoma,Arial,sans-serif;; text-shadow:1px 1px #fff; padding:0; margin:0;">
+    <div style="width:600px;margin:0 auto; padding:40px 0 20px;">
+        <div style="border:1px solid #d9d9d9;border-radius:3px; background:#fff; box-shadow: 0px 2px 5px rgba(0, 0, 0,.05); -webkit-box-shadow: 0px 2px 5px rgba(0, 0, 0,.05);">
+            <div style="padding: 20px 15px;">
+                <h1 style="font-size:20px; padding:10px 0 20px; margin:0; border-bottom:1px solid #ddd;"><a style="color:#333;text-decoration:none;" target="_blank" href="{{.AppUrl}}">{{AppName}}</a></h1>
+                <div style="padding:40px 15px;">
+                    <div style="font-size:16px; padding-bottom:30px; font-weight:bold;">
+                        {{.Title}}
+                    </div>
+                    <div style="font-size:14px; padding:0 15px;">
+                        {{template "body" .}}
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div style="color:#aaa;padding:10px;text-align:center;">
+            © 2014 <a style="color:#888;text-decoration:none;" target="_blank" href="{{.AppUrl}}">{{AppName}}
+        </div>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file
index 319db6cfa52a0ce015d36e1ea9e9f0829d31aa18..1ee723ee07466ec130e37adcc443a497d9ef67be 100644 (file)
@@ -4,19 +4,23 @@
     <form action="/user/activate" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
         <h3>Activate Your Account</h3>
         {{if .IsActivatePage}}
-        {{if .ServiceNotEnabled}}
-        <p>Sorry, Register Mail Confirmation has been disabled.</p>
+            {{if .ServiceNotEnabled}}
+            <p>Sorry, Register Mail Confirmation has been disabled.</p>
+            {{else}}
+            <p>New confirmation e-mail has been sent to <b>{{.SignedUser.Email}}</b>, please check your inbox within {{.Hours}} hours.</p>
+            {{end}}
         {{else}}
-        <p>New confirmation e-mail has been sent to <b>{{.SignedUser.Email}}</b>, please check your inbox within 3 days.</p>
-        {{end}}
-        {{else}}
-               <p>Hi, {{.SignedUser.Name}}, you have an unconfirmed email address(<b>{{.SignedUser.Email}}</b>). If you haven't received a confirmation e-mail or need to resend a new one, please click botton below.</p>
-               <hr/>
-        <div class="form-group">
-            <div class="col-md-offset-4 col-md-6">
-                <button type="submit" class="btn btn-lg btn-primary">Click here to resend your active e-mail</button>
+            {{if .IsSendRegisterMail}}
+            <p>A confirmation e-mail has been sent to <b>{{.Email}}</b>, please check your inbox within {{.Hours}} hours.</p>
+            {{else}}
+               <p>Hi, {{.SignedUser.Name}}, you have an unconfirmed email address(<b>{{.SignedUser.Email}}</b>). If you haven't received a confirmation e-mail or need to resend a new one, please click botton below.</p>
+               <hr/>
+            <div class="form-group">
+                <div class="col-md-offset-4 col-md-6">
+                    <button type="submit" class="btn btn-lg btn-primary">Click here to resend your active e-mail</button>
+                </div>
             </div>
-        </div>
+            {{end}}
         {{end}}
     </form>
 </div>