Add flash
This commit is contained in:
parent
459223cf01
commit
45462662e9
17 changed files with 179 additions and 129 deletions
|
@ -23,10 +23,6 @@ import (
|
|||
"github.com/gogits/gogs/modules/middleware"
|
||||
)
|
||||
|
||||
type installRouter int
|
||||
|
||||
var InstallRouter installRouter = 1
|
||||
|
||||
// Check run mode(Default of martini is Dev).
|
||||
func checkRunMode() {
|
||||
switch base.Cfg.MustValue("", "RUN_MODE") {
|
||||
|
@ -58,7 +54,7 @@ func GlobalInit() {
|
|||
checkRunMode()
|
||||
}
|
||||
|
||||
func (r installRouter) Get(ctx *middleware.Context, form auth.InstallForm) {
|
||||
func Install(ctx *middleware.Context, form auth.InstallForm) {
|
||||
if base.InstallLock {
|
||||
ctx.Handle(404, "install.Install", errors.New("Installation is prohibited"))
|
||||
return
|
||||
|
@ -101,7 +97,7 @@ func (r installRouter) Get(ctx *middleware.Context, form auth.InstallForm) {
|
|||
ctx.HTML(200, "install")
|
||||
}
|
||||
|
||||
func (r installRouter) Post(ctx *middleware.Context, form auth.InstallForm) {
|
||||
func InstallPost(ctx *middleware.Context, form auth.InstallForm) {
|
||||
if base.InstallLock {
|
||||
ctx.Handle(404, "install.Install", errors.New("Installation is prohibited"))
|
||||
return
|
||||
|
|
|
@ -14,8 +14,16 @@ import (
|
|||
"github.com/gogits/gogs/modules/middleware"
|
||||
)
|
||||
|
||||
func Setting(ctx *middleware.Context) {
|
||||
ctx.Data["Title"] = "Setting"
|
||||
ctx.Data["PageIsUserSetting"] = true
|
||||
ctx.Data["IsUserPageSetting"] = true
|
||||
ctx.Data["Owner"] = ctx.User
|
||||
ctx.HTML(200, "user/setting")
|
||||
}
|
||||
|
||||
// Render user setting page (email, website modify)
|
||||
func Setting(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
||||
func SettingPost(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
||||
ctx.Data["Title"] = "Setting"
|
||||
ctx.Data["PageIsUserSetting"] = true // For navbar arrow.
|
||||
ctx.Data["IsUserPageSetting"] = true // For setting nav highlight.
|
||||
|
@ -23,7 +31,7 @@ func Setting(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
|||
user := ctx.User
|
||||
ctx.Data["Owner"] = user
|
||||
|
||||
if ctx.Req.Method == "GET" || ctx.HasError() {
|
||||
if ctx.HasError() {
|
||||
ctx.HTML(200, "user/setting")
|
||||
return
|
||||
}
|
||||
|
@ -32,13 +40,13 @@ func Setting(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
|||
if user.Name != form.UserName {
|
||||
isExist, err := models.IsUserExist(form.UserName)
|
||||
if err != nil {
|
||||
ctx.Handle(404, "user.Setting(update: check existence)", err)
|
||||
ctx.Handle(500, "user.Setting(update: check existence)", err)
|
||||
return
|
||||
} else if isExist {
|
||||
ctx.RenderWithErr("User name has been taken.", "user/setting", &form)
|
||||
return
|
||||
} else if err = models.ChangeUserName(user, form.UserName); err != nil {
|
||||
ctx.Handle(404, "user.Setting(change user name)", err)
|
||||
ctx.Handle(500, "user.Setting(change user name)", err)
|
||||
return
|
||||
}
|
||||
log.Trace("%s User name changed: %s -> %s", ctx.Req.RequestURI, user.Name, form.UserName)
|
||||
|
@ -52,13 +60,13 @@ func Setting(ctx *middleware.Context, form auth.UpdateProfileForm) {
|
|||
user.Avatar = base.EncodeMd5(form.Avatar)
|
||||
user.AvatarEmail = form.Avatar
|
||||
if err := models.UpdateUser(user); err != nil {
|
||||
ctx.Handle(200, "setting.Setting", err)
|
||||
ctx.Handle(500, "setting.Setting", err)
|
||||
return
|
||||
}
|
||||
|
||||
ctx.Data["IsSuccess"] = true
|
||||
ctx.HTML(200, "user/setting")
|
||||
log.Trace("%s User setting updated: %s", ctx.Req.RequestURI, ctx.User.LowerName)
|
||||
|
||||
ctx.Flash.Success("Your profile has been successfully updated.")
|
||||
ctx.Redirect("/user/setting")
|
||||
}
|
||||
|
||||
func SettingPassword(ctx *middleware.Context, form auth.UpdatePasswdForm) {
|
||||
|
|
|
@ -93,11 +93,10 @@ func SocialSignIn(ctx *middleware.Context, tokens oauth2.Tokens) {
|
|||
log.Info("login soc id: %v", socid)
|
||||
return
|
||||
}
|
||||
|
||||
config := &oauth.Config{
|
||||
//ClientId: base.OauthService.Github.ClientId,
|
||||
//ClientSecret: base.OauthService.Github.ClientSecret, // FIXME: I don't know why compile error here
|
||||
ClientId: "09383403ff2dc16daaa1",
|
||||
ClientSecret: "0e4aa0c3630df396cdcea01a9d45cacf79925fea",
|
||||
ClientId: base.OauthService.GitHub.ClientId,
|
||||
ClientSecret: base.OauthService.GitHub.ClientSecret,
|
||||
RedirectURL: strings.TrimSuffix(base.AppUrl, "/") + ctx.Req.URL.RequestURI(),
|
||||
Scope: base.OauthService.GitHub.Scopes,
|
||||
AuthURL: "https://github.com/login/oauth/authorize",
|
||||
|
|
|
@ -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
|
||||
}
|
||||
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
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}()
|
||||
|
||||
user, err := models.GetUserByName(userName)
|
||||
if err != nil {
|
||||
ctx.HTML(200, "user/signin")
|
||||
return
|
||||
}
|
||||
|
||||
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)
|
||||
redirectTo, _ := url.QueryUnescape(ctx.GetCookie("redirect_to"))
|
||||
if len(redirectTo) > 0 {
|
||||
ctx.SetCookie("redirect_to", "", -1)
|
||||
ctx.Redirect(redirectTo)
|
||||
} else {
|
||||
ctx.Redirect("/")
|
||||
}
|
||||
// Check auto-login.
|
||||
userName := ctx.GetCookie(base.CookieUserName)
|
||||
if len(userName) == 0 {
|
||||
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)
|
||||
}
|
||||
}()
|
||||
|
||||
user, err := models.GetUserByName(userName)
|
||||
if err != nil {
|
||||
ctx.HTML(200, "user/signin")
|
||||
return
|
||||
}
|
||||
|
||||
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"),
|
||||
Salt: ctx.User.Salt,
|
||||
}
|
||||
|
||||
tmpUser := models.User{Passwd: ctx.Query("password")}
|
||||
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
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue