diff options
-rw-r--r-- | modules/auth/mail.go | 17 | ||||
-rw-r--r-- | modules/middleware/auth.go | 4 | ||||
-rw-r--r-- | routers/user/user.go | 16 | ||||
-rw-r--r-- | templates/user/active.tmpl | 22 | ||||
-rw-r--r-- | web.go | 1 |
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 @@ -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) |