]> source.dussan.org Git - gitea.git/commitdiff
Add active page
authorUnknown <joe2010xtmf@163.com>
Wed, 19 Mar 2014 13:24:02 +0000 (09:24 -0400)
committerUnknown <joe2010xtmf@163.com>
Wed, 19 Mar 2014 13:24:02 +0000 (09:24 -0400)
modules/auth/mail.go
modules/middleware/auth.go
routers/user/user.go
templates/user/active.tmpl [new file with mode: 0644]
web.go

index cdfcce4f99df6c034e11e33f0fb69d709c45e96f..3de18b677b1cb25715e6e87e4052010f3383659f 100644 (file)
@@ -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)
+}
index cf7bee4d22f1946f76c30638177c7b0ca53916d3..33321d6e413ffde6699e9dde99464f5b1977d9ef 100644 (file)
@@ -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
                }
        }
 }
index 2d6bcedce5e634d4bc376b95ac6ab20b7d2727ff..d702f2b956e1dcb7f29e64a63d5a70b0cf63864e 100644 (file)
@@ -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 (file)
index 0000000..758516d
--- /dev/null
@@ -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 97cfdcc4362f5b263f650e7390e34b883d8f6d9f..e519fe104d8c3d808cef54118de78e0caec2659a 100644 (file)
--- 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)