diff options
author | Don Bowman <don.waterloo@gmail.com> | 2015-08-12 21:10:00 +0000 |
---|---|---|
committer | Don Bowman <don.waterloo@gmail.com> | 2015-08-12 21:10:00 +0000 |
commit | 1cb46ede1acf4f8527e64fcae7e92672cad764b2 (patch) | |
tree | fabb54ee5f040be2a4ee5c95f87cb3e9fbf7bdea /routers/user | |
parent | 9e6bd31d76aa6d6495a2144466af78773f34d07c (diff) | |
parent | aede5cdb04fdbf74d9c602062fdece9f408e90f4 (diff) |
Merge branch 'master' of https://github.com/gogits/gogs
Conflicts:
routers/repo/download.go
Diffstat (limited to 'routers/user')
-rw-r--r-- | routers/user/auth.go | 21 | ||||
-rw-r--r-- | routers/user/home.go | 32 | ||||
-rw-r--r-- | routers/user/setting.go | 56 |
3 files changed, 49 insertions, 60 deletions
diff --git a/routers/user/auth.go b/routers/user/auth.go index 5dacaf8c..4b29a29e 100644 --- a/routers/user/auth.go +++ b/routers/user/auth.go @@ -60,7 +60,7 @@ func SignIn(ctx *middleware.Context) { u, err := models.GetUserByName(uname) if err != nil { - if err != models.ErrUserNotExist { + if !models.IsErrUserNotExist(err) { ctx.Handle(500, "GetUserByName", err) } else { ctx.HTML(200, SIGNIN) @@ -105,7 +105,7 @@ func SignInPost(ctx *middleware.Context, form auth.SignInForm) { u, err := models.UserSignIn(form.UserName, form.Password) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { ctx.RenderWithErr(ctx.Tr("form.username_password_incorrect"), SIGNIN, &form) } else { ctx.Handle(500, "UserSignIn", err) @@ -249,16 +249,19 @@ func SignUpPost(ctx *middleware.Context, cpt *captcha.Captcha, form auth.Registe } if err := models.CreateUser(u); err != nil { - switch err { - case models.ErrUserAlreadyExist: + switch { + case models.IsErrUserAlreadyExist(err): ctx.Data["Err_UserName"] = true ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SIGNUP, &form) - case models.ErrEmailAlreadyUsed: + case models.IsErrEmailAlreadyUsed(err): ctx.Data["Err_Email"] = true ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SIGNUP, &form) - case models.ErrUserNameIllegal: + case models.IsErrNameReserved(err): ctx.Data["Err_UserName"] = true - ctx.RenderWithErr(ctx.Tr("form.illegal_username"), SIGNUP, &form) + ctx.RenderWithErr(ctx.Tr("user.form.name_reserved", err.(models.ErrNameReserved).Name), SIGNUP, &form) + case models.IsErrNamePatternNotAllowed(err): + ctx.Data["Err_UserName"] = true + ctx.RenderWithErr(ctx.Tr("user.form.name_pattern_not_allowed", err.(models.ErrNamePatternNotAllowed).Pattern), SIGNUP, &form) default: ctx.Handle(500, "CreateUser", err) } @@ -325,7 +328,7 @@ func Activate(ctx *middleware.Context) { user.IsActive = true user.Rands = models.GetUserSalt() if err := models.UpdateUser(user); err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { ctx.Error(404) } else { ctx.Handle(500, "UpdateUser", err) @@ -388,7 +391,7 @@ func ForgotPasswdPost(ctx *middleware.Context) { email := ctx.Query("email") u, err := models.GetUserByEmail(email) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { ctx.Data["Err_Email"] = true ctx.RenderWithErr(ctx.Tr("auth.email_not_associate"), FORGOT_PASSWORD, nil) } else { diff --git a/routers/user/home.go b/routers/user/home.go index 3484e780..c38dba52 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -38,7 +38,7 @@ func Dashboard(ctx *middleware.Context) { // Organization. org, err := models.GetUserByName(orgName) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { ctx.Handle(404, "GetUserByName", err) } else { ctx.Handle(500, "GetUserByName", err) @@ -115,7 +115,7 @@ func Dashboard(ctx *middleware.Context) { // FIXME: cache results? u, err := models.GetUserByName(act.ActUserName) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { continue } ctx.Handle(500, "GetUserByName", err) @@ -152,6 +152,7 @@ func ShowSSHKeys(ctx *middleware.Context, uid int64) { var buf bytes.Buffer for i := range keys { buf.WriteString(keys[i].OmitEmail()) + buf.WriteString("\n") } ctx.RenderData(200, buf.Bytes()) } @@ -175,7 +176,7 @@ func Profile(ctx *middleware.Context) { u, err := models.GetUserByName(uname) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { ctx.Handle(404, "GetUserByName", err) } else { ctx.Handle(500, "GetUserByName", err) @@ -193,11 +194,6 @@ func Profile(ctx *middleware.Context) { ctx.Redirect(setting.AppSubUrl + "/org/" + u.Name) return } - - // For security reason, hide e-mail address for anonymous visitors. - if !ctx.IsSigned { - u.Email = "" - } ctx.Data["Owner"] = u tab := ctx.Query("tab") @@ -227,7 +223,7 @@ func Profile(ctx *middleware.Context) { // FIXME: cache results? u, err := models.GetUserByName(act.ActUserName) if err != nil { - if err == models.ErrUserNotExist { + if models.IsErrUserNotExist(err) { continue } ctx.Handle(500, "GetUserByName", err) @@ -251,17 +247,17 @@ func Profile(ctx *middleware.Context) { func Email2User(ctx *middleware.Context) { u, err := models.GetUserByEmail(ctx.Query("email")) if err != nil { - if err == models.ErrUserNotExist { - ctx.Handle(404, "user.Email2User(GetUserByEmail)", err) + if models.IsErrUserNotExist(err) { + ctx.Handle(404, "GetUserByEmail", err) } else { - ctx.Handle(500, "user.Email2User(GetUserByEmail)", err) + ctx.Handle(500, "GetUserByEmail", err) } return } ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name) } -func Issues(ctx *middleware.Context) { +func Issues(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("issues") ctx.Data["PageIsDashboard"] = true ctx.Data["PageIsIssues"] = true @@ -354,13 +350,13 @@ func Issues(ctx *middleware.Context) { } } - issues[i].Repo, err = models.GetRepositoryById(issues[i].RepoId) + issues[i].Repo, err = models.GetRepositoryById(issues[i].RepoID) if err != nil { if models.IsErrRepoNotExist(err) { - log.Warn("user.Issues(GetRepositoryById #%d): repository not exist", issues[i].RepoId) + log.Warn("GetRepositoryById[%d]: repository not exist", issues[i].RepoID) continue } else { - ctx.Handle(500, fmt.Sprintf("user.Issues(GetRepositoryById #%d)", issues[i].RepoId), err) + ctx.Handle(500, fmt.Sprintf("GetRepositoryById[%d]", issues[i].RepoID), err) return } } @@ -388,8 +384,8 @@ func Issues(ctx *middleware.Context) { } else { ctx.Data["ShowCount"] = issueStats.OpenCount } - + ctx.Data["ContextUser"] = ctx.User - + ctx.HTML(200, ISSUES) } diff --git a/routers/user/setting.go b/routers/user/setting.go index 20e6c060..de9af655 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -50,21 +50,20 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) { // Check if user name has been changed. if ctx.User.Name != form.UserName { - isExist, err := models.IsUserExist(ctx.User.Id, form.UserName) - if err != nil { - ctx.Handle(500, "IsUserExist", err) - return - } else if isExist { - ctx.RenderWithErr(ctx.Tr("form.username_been_taken"), SETTINGS_PROFILE, &form) - return - } else if err = models.ChangeUserName(ctx.User, form.UserName); err != nil { - switch err { - case models.ErrUserNameIllegal: - ctx.Flash.Error(ctx.Tr("form.illegal_username")) + if err := models.ChangeUserName(ctx.User, form.UserName); err != nil { + switch { + case models.IsErrUserAlreadyExist(err): + ctx.Flash.Error(ctx.Tr("form.username_been_taken")) ctx.Redirect(setting.AppSubUrl + "/user/settings") - case models.ErrEmailAlreadyUsed: + case models.IsErrEmailAlreadyUsed(err): ctx.Flash.Error(ctx.Tr("form.email_been_used")) ctx.Redirect(setting.AppSubUrl + "/user/settings") + case models.IsErrNameReserved(err): + ctx.Flash.Error(ctx.Tr("user.form.name_reserved")) + ctx.Redirect(setting.AppSubUrl + "/user/settings") + case models.IsErrNamePatternNotAllowed(err): + ctx.Flash.Error(ctx.Tr("user.form.name_pattern_not_allowed")) + ctx.Redirect(setting.AppSubUrl + "/user/settings") default: ctx.Handle(500, "ChangeUserName", err) } @@ -204,7 +203,7 @@ func SettingsEmailPost(ctx *middleware.Context, form auth.AddEmailForm) { } if err := models.AddEmailAddress(e); err != nil { - if err == models.ErrEmailAlreadyUsed { + if models.IsErrEmailAlreadyUsed(err) { ctx.RenderWithErr(ctx.Tr("form.email_been_used"), SETTINGS_EMAILS, &form) return } @@ -306,7 +305,7 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - if err = models.DeletePublicKey(&models.PublicKey{Id: id}); err != nil { + if err = models.DeletePublicKey(&models.PublicKey{ID: id}); err != nil { ctx.Handle(500, "DeletePublicKey", err) } else { log.Trace("SSH key deleted: %s", ctx.User.Name) @@ -322,15 +321,8 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { return } - // Parse openssh style string from form content - content, err := models.ParseKeyString(form.Content) + content, err := models.CheckPublicKeyString(form.Content) if err != nil { - ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error())) - ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") - return - } - - if ok, err := models.CheckPublicKeyString(content); !ok { if err == models.ErrKeyUnableVerify { ctx.Flash.Info(ctx.Tr("form.unable_verify_ssh_key")) } else { @@ -340,21 +332,19 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) { } } - k := &models.PublicKey{ - OwnerId: ctx.User.Id, - Name: form.SSHTitle, - Content: content, - } - if err := models.AddPublicKey(k); err != nil { - if err == models.ErrKeyAlreadyExist { - ctx.RenderWithErr(ctx.Tr("form.ssh_key_been_used"), SETTINGS_SSH_KEYS, &form) - return + if err = models.AddPublicKey(ctx.User.Id, form.Title, content); err != nil { + switch { + case models.IsErrKeyAlreadyExist(err): + ctx.RenderWithErr(ctx.Tr("settings.ssh_key_been_used"), SETTINGS_SSH_KEYS, &form) + case models.IsErrKeyNameAlreadyUsed(err): + ctx.RenderWithErr(ctx.Tr("settings.ssh_key_name_used"), SETTINGS_SSH_KEYS, &form) + default: + ctx.Handle(500, "AddPublicKey", err) } - ctx.Handle(500, "ssh.AddPublicKey", err) return } else { log.Trace("SSH key added: %s", ctx.User.Name) - ctx.Flash.Success(ctx.Tr("settings.add_key_success")) + ctx.Flash.Success(ctx.Tr("settings.add_key_success", form.Title)) ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh") return } |