diff options
author | Unknown <joe2010xtmf@163.com> | 2014-04-10 16:36:50 -0400 |
---|---|---|
committer | Unknown <joe2010xtmf@163.com> | 2014-04-10 16:36:50 -0400 |
commit | 45462662e9bdb001f1cf3d4ca0e4d679757c7642 (patch) | |
tree | eb5f3bfe24a423601ad27121c95427719cb16984 /routers/user/user.go | |
parent | 459223cf01d19a6956d370fad9ab41d3a32233d0 (diff) | |
download | gitea-45462662e9bdb001f1cf3d4ca0e4d679757c7642.tar.gz gitea-45462662e9bdb001f1cf3d4ca0e4d679757c7642.zip |
Add flash
Diffstat (limited to 'routers/user/user.go')
-rw-r--r-- | routers/user/user.go | 171 |
1 files changed, 102 insertions, 69 deletions
diff --git a/routers/user/user.go b/routers/user/user.go index 084d0bbde2..37c6baa9f2 100644 --- a/routers/user/user.go +++ b/routers/user/user.go @@ -74,57 +74,63 @@ func Profile(ctx *middleware.Context, params martini.Params) { ctx.HTML(200, "user/profile") } -func SignIn(ctx *middleware.Context, form auth.LogInForm) { +func SignIn(ctx *middleware.Context) { ctx.Data["Title"] = "Log In" - if ctx.Req.Method == "GET" { - if base.OauthService != nil { - ctx.Data["OauthEnabled"] = true - ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled - } - - // Check auto-login. - userName := ctx.GetCookie(base.CookieUserName) - if len(userName) == 0 { - ctx.HTML(200, "user/signin") - return - } + if base.OauthService != nil { + ctx.Data["OauthEnabled"] = true + ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled + } - isSucceed := false - defer func() { - if !isSucceed { - log.Trace("%s auto-login cookie cleared: %s", ctx.Req.RequestURI, userName) - ctx.SetCookie(base.CookieUserName, "", -1) - ctx.SetCookie(base.CookieRememberName, "", -1) - } - }() + // Check auto-login. + userName := ctx.GetCookie(base.CookieUserName) + if len(userName) == 0 { + ctx.HTML(200, "user/signin") + return + } - user, err := models.GetUserByName(userName) - if err != nil { - ctx.HTML(200, "user/signin") - return + isSucceed := false + defer func() { + if !isSucceed { + log.Trace("%s auto-login cookie cleared: %s", ctx.Req.RequestURI, userName) + ctx.SetCookie(base.CookieUserName, "", -1) + ctx.SetCookie(base.CookieRememberName, "", -1) } + }() - secret := base.EncodeMd5(user.Rands + user.Passwd) - value, _ := ctx.GetSecureCookie(secret, base.CookieRememberName) - if value != user.Name { - ctx.HTML(200, "user/signin") - return - } + user, err := models.GetUserByName(userName) + if err != nil { + ctx.HTML(200, "user/signin") + return + } - isSucceed = true - ctx.Session.Set("userId", user.Id) - ctx.Session.Set("userName", user.Name) - redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")) - if len(redirectTo) > 0 { - ctx.SetCookie("redirect_to", "", -1) - ctx.Redirect(redirectTo) - } else { - ctx.Redirect("/") - } + secret := base.EncodeMd5(user.Rands + user.Passwd) + value, _ := ctx.GetSecureCookie(secret, base.CookieRememberName) + if value != user.Name { + ctx.HTML(200, "user/signin") return } + isSucceed = true + ctx.Session.Set("userId", user.Id) + ctx.Session.Set("userName", user.Name) + if redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")); len(redirectTo) > 0 { + ctx.SetCookie("redirect_to", "", -1) + ctx.Redirect(redirectTo) + return + } + + ctx.Redirect("/") +} + +func SignInPost(ctx *middleware.Context, form auth.LogInForm) { + ctx.Data["Title"] = "Log In" + + if base.OauthService != nil { + ctx.Data["OauthEnabled"] = true + ctx.Data["OauthGitHubEnabled"] = base.OauthService.GitHub.Enabled + } + if ctx.HasError() { ctx.HTML(200, "user/signin") return @@ -138,7 +144,7 @@ func SignIn(ctx *middleware.Context, form auth.LogInForm) { return } - ctx.Handle(200, "user.SignIn", err) + ctx.Handle(500, "user.SignIn", err) return } @@ -151,13 +157,13 @@ func SignIn(ctx *middleware.Context, form auth.LogInForm) { ctx.Session.Set("userId", user.Id) ctx.Session.Set("userName", user.Name) - redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")) - if len(redirectTo) > 0 { + if redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to")); len(redirectTo) > 0 { ctx.SetCookie("redirect_to", "", -1) ctx.Redirect(redirectTo) - } else { - ctx.Redirect("/") + return } + + ctx.Redirect("/") } func SignOut(ctx *middleware.Context) { @@ -168,7 +174,7 @@ func SignOut(ctx *middleware.Context) { ctx.Redirect("/") } -func SignUp(ctx *middleware.Context, form auth.RegisterForm) { +func SignUp(ctx *middleware.Context) { ctx.Data["Title"] = "Sign Up" ctx.Data["PageIsSignUp"] = true @@ -178,8 +184,15 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) { return } - if ctx.Req.Method == "GET" { - ctx.HTML(200, "user/signup") + ctx.HTML(200, "user/signup") +} + +func SignUpPost(ctx *middleware.Context, form auth.RegisterForm) { + ctx.Data["Title"] = "Sign Up" + ctx.Data["PageIsSignUp"] = true + + if base.Service.DisenableRegisteration { + ctx.Handle(403, "user.SignUpPost", nil) return } @@ -213,7 +226,7 @@ func SignUp(ctx *middleware.Context, form auth.RegisterForm) { case models.ErrUserNameIllegal: ctx.RenderWithErr(models.ErrRepoNameIllegal.Error(), "user/signup", &form) default: - ctx.Handle(200, "user.SignUp", err) + ctx.Handle(500, "user.SignUp", err) } return } @@ -240,25 +253,28 @@ func Delete(ctx *middleware.Context) { ctx.Data["Title"] = "Delete Account" ctx.Data["PageIsUserSetting"] = true ctx.Data["IsUserPageSettingDelete"] = true + ctx.HTML(200, "user/delete") +} - if ctx.Req.Method == "GET" { - ctx.HTML(200, "user/delete") - return - } +func DeletePost(ctx *middleware.Context) { + ctx.Data["Title"] = "Delete Account" + ctx.Data["PageIsUserSetting"] = true + ctx.Data["IsUserPageSettingDelete"] = true - tmpUser := models.User{Passwd: ctx.Query("password")} + tmpUser := models.User{ + Passwd: ctx.Query("password"), + Salt: ctx.User.Salt, + } tmpUser.EncodePasswd() - if len(tmpUser.Passwd) == 0 || tmpUser.Passwd != ctx.User.Passwd { - ctx.Data["HasError"] = true - ctx.Data["ErrorMsg"] = "Password is not correct. Make sure you are owner of this account." + if tmpUser.Passwd != ctx.User.Passwd { + ctx.Flash.Error("Password is not correct. Make sure you are owner of this account.") } else { if err := models.DeleteUser(ctx.User); err != nil { - ctx.Data["HasError"] = true switch err { case models.ErrUserOwnRepos: - ctx.Data["ErrorMsg"] = "Your account still have ownership of repository, you have to delete or transfer them first." + ctx.Flash.Error("Your account still have ownership of repository, you have to delete or transfer them first.") default: - ctx.Handle(200, "user.Delete", err) + ctx.Handle(500, "user.Delete", err) return } } else { @@ -267,7 +283,7 @@ func Delete(ctx *middleware.Context) { } } - ctx.HTML(200, "user/delete") + ctx.Redirect("/user/delete") } const ( @@ -439,10 +455,17 @@ func ForgotPasswd(ctx *middleware.Context) { } ctx.Data["IsResetRequest"] = true - if ctx.Req.Method == "GET" { - ctx.HTML(200, "user/forgot_passwd") + ctx.HTML(200, "user/forgot_passwd") +} + +func ForgotPasswdPost(ctx *middleware.Context) { + ctx.Data["Title"] = "Forgot Password" + + if base.MailService == nil { + ctx.Handle(403, "user.ForgotPasswdPost", nil) return } + ctx.Data["IsResetRequest"] = true email := ctx.Query("email") u, err := models.GetUserByEmail(email) @@ -450,7 +473,7 @@ func ForgotPasswd(ctx *middleware.Context) { if err == models.ErrUserNotExist { ctx.RenderWithErr("This e-mail address does not associate to any account.", "user/forgot_passwd", nil) } else { - ctx.Handle(404, "user.ResetPasswd(check existence)", err) + ctx.Handle(500, "user.ResetPasswd(check existence)", err) } return } @@ -473,6 +496,8 @@ func ForgotPasswd(ctx *middleware.Context) { } func ResetPasswd(ctx *middleware.Context) { + ctx.Data["Title"] = "Reset Password" + code := ctx.Query("code") if len(code) == 0 { ctx.Error(404) @@ -480,11 +505,19 @@ func ResetPasswd(ctx *middleware.Context) { } ctx.Data["Code"] = code - if ctx.Req.Method == "GET" { - ctx.Data["IsResetForm"] = true - ctx.HTML(200, "user/reset_passwd") + ctx.Data["IsResetForm"] = true + ctx.HTML(200, "user/reset_passwd") +} + +func ResetPasswdPost(ctx *middleware.Context) { + ctx.Data["Title"] = "Reset Password" + + code := ctx.Query("code") + if len(code) == 0 { + ctx.Error(404) return } + ctx.Data["Code"] = code if u := models.VerifyUserActiveCode(code); u != nil { // Validate password length. @@ -500,7 +533,7 @@ func ResetPasswd(ctx *middleware.Context) { u.Salt = models.GetUserSalt() u.EncodePasswd() if err := models.UpdateUser(u); err != nil { - ctx.Handle(404, "user.ResetPasswd(UpdateUser)", err) + ctx.Handle(500, "user.ResetPasswd(UpdateUser)", err) return } |