Browse Source

Add active page

Unknown 11 years ago
parent
commit
a2fbb24615
5 changed files with 60 additions and 0 deletions
  1. 17 0
      modules/auth/mail.go
  2. 4 0
      modules/middleware/auth.go
  3. 16 0
      routers/user/user.go
  4. 22 0
      templates/user/active.tmpl
  5. 1 0
      web.go

+ 17 - 0
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)
+}

+ 4 - 0
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
 		}
 	}
 }

+ 16 - 0
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
+	}
+}

+ 22 - 0
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" .}}

+ 1 - 0
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)