aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-19 09:24:02 -0400
committerUnknown <joe2010xtmf@163.com>2014-03-19 09:24:02 -0400
commita2fbb246151ce722a30d932dd73a9ecc76b020e9 (patch)
treea356ce201ddf77a0b9c2511c36781735a4ce515d
parentde087c7b4a31cb0643d5432ec9d6b26e208baff2 (diff)
downloadgitea-a2fbb246151ce722a30d932dd73a9ecc76b020e9.tar.gz
gitea-a2fbb246151ce722a30d932dd73a9ecc76b020e9.zip
Add active page
-rw-r--r--modules/auth/mail.go17
-rw-r--r--modules/middleware/auth.go4
-rw-r--r--routers/user/user.go16
-rw-r--r--templates/user/active.tmpl22
-rw-r--r--web.go1
5 files changed, 60 insertions, 0 deletions
diff --git a/modules/auth/mail.go b/modules/auth/mail.go
index cdfcce4f99..3de18b677b 100644
--- a/modules/auth/mail.go
+++ b/modules/auth/mail.go
@@ -39,3 +39,20 @@ func SendRegisterMail(user *models.User) {
// 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)
+}
diff --git a/modules/middleware/auth.go b/modules/middleware/auth.go
index cf7bee4d22..33321d6e41 100644
--- a/modules/middleware/auth.go
+++ b/modules/middleware/auth.go
@@ -16,6 +16,10 @@ func SignInRequire(redirect bool) martini.Handler {
ctx.Render.Redirect("/")
}
return
+ } else if !ctx.User.IsActive {
+ ctx.Data["Title"] = "Activate Your Account"
+ ctx.Render.HTML(200, "user/active", ctx.Data)
+ return
}
}
}
diff --git a/routers/user/user.go b/routers/user/user.go
index 2d6bcedce5..d702f2b956 100644
--- a/routers/user/user.go
+++ b/routers/user/user.go
@@ -99,6 +99,7 @@ func SignIn(ctx *middleware.Context, form auth.LogInForm) {
ctx.Session.Set("userId", user.Id)
ctx.Session.Set("userName", user.Name)
+
ctx.Render.Redirect("/")
}
@@ -223,3 +224,18 @@ func Pulls(ctx *middleware.Context) {
func Stars(ctx *middleware.Context) {
ctx.Render.HTML(200, "user/stars", ctx.Data)
}
+
+func Activate(ctx *middleware.Context) {
+ code := ctx.Query("code")
+ if len(code) == 0 {
+ ctx.Data["IsActivatePage"] = true
+ // Resend confirmation e-mail.
+ if base.Service.RegisterEmailConfirm {
+ auth.SendRegisterMail(ctx.User)
+ } else {
+ ctx.Data["ServiceNotEnabled"] = true
+ }
+ ctx.Render.HTML(200, "user/active", ctx.Data)
+ return
+ }
+}
diff --git a/templates/user/active.tmpl b/templates/user/active.tmpl
new file mode 100644
index 0000000000..758516d779
--- /dev/null
+++ b/templates/user/active.tmpl
@@ -0,0 +1,22 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div id="gogs-body" class="container">
+ <form action="/user/activate" method="post" class="form-horizontal gogs-card" id="gogs-login-card">
+ <h3>Active Your Account</h3>
+ {{if .IsActivatePage}}
+ {{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 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>
+ <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>
+ {{end}}
+ </form>
+</div>
+{{template "base/footer" .}} \ No newline at end of file
diff --git a/web.go b/web.go
index 97cfdcc436..e519fe104d 100644
--- a/web.go
+++ b/web.go
@@ -84,6 +84,7 @@ func runWeb(*cli.Context) {
m.Any("/user/sign_up", reqSignOut, binding.BindIgnErr(auth.RegisterForm{}), user.SignUp)
m.Any("/user/delete", reqSignIn, user.Delete)
m.Get("/user/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds)
+ m.Get("/user/activate", user.Activate)
m.Any("/user/setting", reqSignIn, binding.BindIgnErr(auth.UpdateProfileForm{}), user.Setting)
m.Any("/user/setting/password", reqSignIn, binding.BindIgnErr(auth.UpdatePasswdForm{}), user.SettingPassword)