diff options
Diffstat (limited to 'routers')
-rw-r--r-- | routers/admin/users.go | 13 | ||||
-rw-r--r-- | routers/api/v1/repo.go | 6 | ||||
-rw-r--r-- | routers/org/members.go | 4 | ||||
-rw-r--r-- | routers/org/setting.go | 7 | ||||
-rw-r--r-- | routers/org/teams.go | 4 | ||||
-rw-r--r-- | routers/repo/http.go | 47 | ||||
-rw-r--r-- | routers/repo/issue.go | 8 | ||||
-rw-r--r-- | routers/repo/repo.go | 12 | ||||
-rw-r--r-- | routers/repo/setting.go | 3 | ||||
-rw-r--r-- | routers/repo/view.go | 6 | ||||
-rw-r--r-- | routers/user/home.go | 15 | ||||
-rw-r--r-- | routers/user/setting.go | 17 |
12 files changed, 73 insertions, 69 deletions
diff --git a/routers/admin/users.go b/routers/admin/users.go index 2bbf13b92d..ddd12a8b22 100644 --- a/routers/admin/users.go +++ b/routers/admin/users.go @@ -168,6 +168,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { ctx.Handle(500, "GetUserById", err) return } + ctx.Data["User"] = u if ctx.HasError() { ctx.HTML(200, USER_EDIT) @@ -175,8 +176,8 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { } // FIXME: need password length check - if len(form.Passwd) > 0 { - u.Passwd = form.Passwd + if len(form.Password) > 0 { + u.Passwd = form.Password u.Salt = models.GetUserSalt() u.EncodePasswd() } @@ -193,8 +194,6 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { u.IsAdmin = form.Admin u.AllowGitHook = form.AllowGitHook - ctx.Data["User"] = u - if err := models.UpdateUser(u); err != nil { if err == models.ErrEmailAlreadyUsed { ctx.Data["Err_Email"] = true @@ -223,11 +222,11 @@ func DeleteUser(ctx *middleware.Context) { } if err = models.DeleteUser(u); err != nil { - switch err { - case models.ErrUserOwnRepos: + switch { + case models.IsErrUserOwnRepos(err): ctx.Flash.Error(ctx.Tr("admin.users.still_own_repo")) ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) - case models.ErrUserHasOrgs: + case models.IsErrUserHasOrgs(err): ctx.Flash.Error(ctx.Tr("admin.users.still_has_org")) ctx.Redirect(setting.AppSubUrl + "/admin/users/" + ctx.Params(":userid")) default: diff --git a/routers/api/v1/repo.go b/routers/api/v1/repo.go index eb9908911f..6bb78ba018 100644 --- a/routers/api/v1/repo.go +++ b/routers/api/v1/repo.go @@ -196,7 +196,7 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) { } } - // Remote address can be HTTPS URL or local path. + // Remote address can be HTTP/HTTPS URL or local path. remoteAddr := form.CloneAddr if strings.HasPrefix(form.CloneAddr, "http") { u, err := url.Parse(form.CloneAddr) @@ -204,8 +204,8 @@ func MigrateRepo(ctx *middleware.Context, form auth.MigrateRepoForm) { ctx.HandleAPI(422, err) return } - if len(form.AuthUserName) > 0 || len(form.AuthPasswd) > 0 { - u.User = url.UserPassword(form.AuthUserName, form.AuthPasswd) + if len(form.AuthUsername) > 0 || len(form.AuthPassword) > 0 { + u.User = url.UserPassword(form.AuthUsername, form.AuthPassword) } remoteAddr = u.String() } else if !com.IsDir(remoteAddr) { diff --git a/routers/org/members.go b/routers/org/members.go index f571e334e1..c8c90cfe48 100644 --- a/routers/org/members.go +++ b/routers/org/members.go @@ -61,14 +61,14 @@ func MembersAction(ctx *middleware.Context) { return } err = org.RemoveMember(uid) - if err == models.ErrLastOrgOwner { + if models.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) ctx.Redirect(ctx.Org.OrgLink + "/members") return } case "leave": err = org.RemoveMember(ctx.User.Id) - if err == models.ErrLastOrgOwner { + if models.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) ctx.Redirect(ctx.Org.OrgLink + "/members") return diff --git a/routers/org/setting.go b/routers/org/setting.go index c638a032e7..8bc6a2a96a 100644 --- a/routers/org/setting.go +++ b/routers/org/setting.go @@ -87,13 +87,12 @@ func SettingsDelete(ctx *middleware.Context) { org := ctx.Org.Organization if ctx.Req.Method == "POST" { - // TODO: validate password. + // FIXME: validate password. if err := models.DeleteOrganization(org); err != nil { - switch err { - case models.ErrUserOwnRepos: + if models.IsErrUserOwnRepos(err) { ctx.Flash.Error(ctx.Tr("form.org_still_own_repo")) ctx.Redirect(setting.AppSubUrl + "/org/" + org.LowerName + "/settings/delete") - default: + } else { ctx.Handle(500, "DeleteOrganization", err) } } else { diff --git a/routers/org/teams.go b/routers/org/teams.go index 69f2734c64..7436e30ee0 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -91,7 +91,7 @@ func TeamsAction(ctx *middleware.Context) { } if err != nil { - if err == models.ErrLastOrgOwner { + if models.IsErrLastOrgOwner(err) { ctx.Flash.Error(ctx.Tr("form.last_org_owner")) } else { log.Error(3, "Action(%s): %v", ctx.Params(":action"), err) @@ -124,7 +124,7 @@ func TeamsRepoAction(ctx *middleware.Context) { var repo *models.Repository repo, err = models.GetRepositoryByName(ctx.Org.Organization.Id, repoName) if err != nil { - if err == models.ErrRepoNotExist { + if models.IsErrRepoNotExist(err) { ctx.Flash.Error(ctx.Tr("org.teams.add_nonexistent_repo")) ctx.Redirect(ctx.Org.OrgLink + "/teams/" + ctx.Org.Team.LowerName + "/repositories") return diff --git a/routers/repo/http.go b/routers/repo/http.go index 3cfc065999..9165128a36 100644 --- a/routers/repo/http.go +++ b/routers/repo/http.go @@ -65,7 +65,7 @@ func Http(ctx *middleware.Context) { repo, err := models.GetRepositoryByName(repoUser.Id, reponame) if err != nil { - if err == models.ErrRepoNotExist { + if models.IsErrRepoNotExist(err) { ctx.Handle(404, "GetRepositoryByName", nil) } else { ctx.Handle(500, "GetRepositoryByName", err) @@ -105,7 +105,7 @@ func Http(ctx *middleware.Context) { return } - authUser, err := models.UserSignIn(authUsername, authPasswd) + authUser, err = models.UserSignIn(authUsername, authPasswd) if err != nil { if err != models.ErrUserNotExist { ctx.Handle(500, "UserSignIn error: %v", err) @@ -160,7 +160,7 @@ func Http(ctx *middleware.Context) { } } - var f = func(rpc string, input []byte) { + callback := func(rpc string, input []byte) { if rpc == "receive-pack" { var lastLine int64 = 0 @@ -189,6 +189,7 @@ func Http(ctx *middleware.Context) { newCommitId := fields[1] refName := fields[2] + // FIXME: handle error. models.Update(refName, oldCommitId, newCommitId, authUsername, username, reponame, authUser.Id) } lastLine = lastLine + size @@ -199,25 +200,23 @@ func Http(ctx *middleware.Context) { } } - config := Config{setting.RepoRootPath, "git", true, true, f} + HTTPBackend(&Config{ + RepoRootPath: setting.RepoRootPath, + GitBinPath: "git", + UploadPack: true, + ReceivePack: true, + OnSucceed: callback, + })(ctx.Resp, ctx.Req.Request) - handler := HttpBackend(&config) - handler(ctx.Resp, ctx.Req.Request) runtime.GC() } -type route struct { - cr *regexp.Regexp - method string - handler func(handler) -} - type Config struct { - ReposRoot string - GitBinPath string - UploadPack bool - ReceivePack bool - OnSucceed func(rpc string, input []byte) + RepoRootPath string + GitBinPath string + UploadPack bool + ReceivePack bool + OnSucceed func(rpc string, input []byte) } type handler struct { @@ -228,6 +227,12 @@ type handler struct { File string } +type route struct { + cr *regexp.Regexp + method string + handler func(handler) +} + var routes = []route{ {regexp.MustCompile("(.*?)/git-upload-pack$"), "POST", serviceUploadPack}, {regexp.MustCompile("(.*?)/git-receive-pack$"), "POST", serviceReceivePack}, @@ -243,7 +248,7 @@ var routes = []route{ } // Request handling function -func HttpBackend(config *Config) http.HandlerFunc { +func HTTPBackend(config *Config) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { for _, route := range routes { r.URL.Path = strings.ToLower(r.URL.Path) // blue: In case some repo name has upper case name @@ -285,8 +290,7 @@ func serviceReceivePack(hr handler) { func serviceRpc(rpc string, hr handler) { w, r, dir := hr.w, hr.r, hr.Dir - access := hasAccess(r, hr.Config, dir, rpc, true) - if access == false { + if !hasAccess(r, hr.Config, dir, rpc, true) { renderNoAccess(w) return } @@ -337,7 +341,6 @@ func serviceRpc(rpc string, hr handler) { if hr.Config.OnSucceed != nil { hr.Config.OnSucceed(rpc, input) } - w.WriteHeader(http.StatusOK) } func getInfoRefs(hr handler) { @@ -408,7 +411,7 @@ func sendFile(contentType string, hr handler) { } func getGitDir(config *Config, fPath string) (string, error) { - root := config.ReposRoot + root := config.RepoRootPath if root == "" { cwd, err := os.Getwd() diff --git a/routers/repo/issue.go b/routers/repo/issue.go index abe33bebf3..294d3d2844 100644 --- a/routers/repo/issue.go +++ b/routers/repo/issue.go @@ -270,12 +270,12 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) { } act := &models.Action{ - ActUserId: ctx.User.Id, + ActUserID: ctx.User.Id, ActUserName: ctx.User.Name, ActEmail: ctx.User.Email, OpType: models.CREATE_ISSUE, Content: fmt.Sprintf("%d|%s", issue.Index, issue.Name), - RepoId: ctx.Repo.Repository.Id, + RepoID: ctx.Repo.Repository.Id, RepoUserName: ctx.Repo.Owner.Name, RepoName: ctx.Repo.Repository.Name, RefName: ctx.Repo.BranchName, @@ -845,12 +845,12 @@ func Comment(ctx *middleware.Context) { // Notify watchers. act := &models.Action{ - ActUserId: ctx.User.Id, + ActUserID: ctx.User.Id, ActUserName: ctx.User.LowerName, ActEmail: ctx.User.Email, OpType: models.COMMENT_ISSUE, Content: fmt.Sprintf("%d|%s", issue.Index, strings.Split(content, "\n")[0]), - RepoId: ctx.Repo.Repository.Id, + RepoID: ctx.Repo.Repository.Id, RepoUserName: ctx.Repo.Owner.LowerName, RepoName: ctx.Repo.Repository.LowerName, } diff --git a/routers/repo/repo.go b/routers/repo/repo.go index 6b84a389d5..8884bea3ab 100644 --- a/routers/repo/repo.go +++ b/routers/repo/repo.go @@ -181,7 +181,7 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) { } } - // Remote address can be HTTPS URL or local path. + // Remote address can be HTTP/HTTPS URL or local path. remoteAddr := form.CloneAddr if strings.HasPrefix(form.CloneAddr, "http") { u, err := url.Parse(form.CloneAddr) @@ -190,8 +190,8 @@ func MigratePost(ctx *middleware.Context, form auth.MigrateRepoForm) { ctx.RenderWithErr(ctx.Tr("form.url_error"), MIGRATE, &form) return } - if len(form.AuthUserName) > 0 || len(form.AuthPasswd) > 0 { - u.User = url.UserPassword(form.AuthUserName, form.AuthPasswd) + if len(form.AuthUsername) > 0 || len(form.AuthPassword) > 0 { + u.User = url.UserPassword(form.AuthUsername, form.AuthPassword) } remoteAddr = u.String() } else if !com.IsDir(remoteAddr) { @@ -251,7 +251,7 @@ func Fork(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("new_fork") if _, err := getForkRepository(ctx); err != nil { - if err == models.ErrRepoNotExist { + if models.IsErrRepoNotExist(err) { ctx.Redirect(setting.AppSubUrl + "/") } else { ctx.Handle(500, "getForkRepository", err) @@ -275,7 +275,7 @@ func ForkPost(ctx *middleware.Context, form auth.CreateRepoForm) { forkRepo, err := getForkRepository(ctx) if err != nil { - if err == models.ErrRepoNotExist { + if models.IsErrRepoNotExist(err) { ctx.Redirect(setting.AppSubUrl + "/") } else { ctx.Handle(500, "getForkRepository", err) @@ -356,7 +356,7 @@ func Action(ctx *middleware.Context) { ctx.Repo.Repository.Description = ctx.Query("desc") ctx.Repo.Repository.Website = ctx.Query("site") - err = models.UpdateRepository(ctx.Repo.Repository) + err = models.UpdateRepository(ctx.Repo.Repository, false) } if err != nil { diff --git a/routers/repo/setting.go b/routers/repo/setting.go index 5b9b672c04..be21405bf6 100644 --- a/routers/repo/setting.go +++ b/routers/repo/setting.go @@ -78,8 +78,9 @@ func SettingsPost(ctx *middleware.Context, form auth.RepoSettingForm) { } ctx.Repo.Repository.Description = form.Description ctx.Repo.Repository.Website = form.Website + visibilityChanged := ctx.Repo.Repository.IsPrivate != form.Private ctx.Repo.Repository.IsPrivate = form.Private - if err := models.UpdateRepository(ctx.Repo.Repository); err != nil { + if err := models.UpdateRepository(ctx.Repo.Repository, visibilityChanged); err != nil { ctx.Handle(404, "UpdateRepository", err) return } diff --git a/routers/repo/view.go b/routers/repo/view.go index cfe0fa010c..2a36db6b42 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -141,13 +141,17 @@ func Home(ctx *middleware.Context) { ctx.Handle(500, "GetSubModule", err) return } + smUrl := "" + if sm != nil { + smUrl = sm.Url + } c, err := ctx.Repo.Commit.GetCommitOfRelPath(filepath.Join(treePath, te.Name())) if err != nil { ctx.Handle(500, "GetCommitOfRelPath", err) return } - files = append(files, []interface{}{te, git.NewSubModuleFile(c, sm.Url, te.Id.String())}) + files = append(files, []interface{}{te, git.NewSubModuleFile(c, smUrl, te.Id.String())}) } } ctx.Data["Files"] = files diff --git a/routers/user/home.go b/routers/user/home.go index 0a1d9dd217..3484e78050 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -104,7 +104,7 @@ func Dashboard(ctx *middleware.Context) { for _, act := range actions { if act.IsPrivate { // This prevents having to retrieve the repository for each action - repo := &models.Repository{Id: act.RepoId, IsPrivate: true} + repo := &models.Repository{Id: act.RepoID, IsPrivate: true} if act.RepoUserName != ctx.User.LowerName { if has, _ := models.HasAccess(ctx.User, repo, models.ACCESS_MODE_READ); !has { continue @@ -216,7 +216,7 @@ func Profile(ctx *middleware.Context) { continue } // This prevents having to retrieve the repository for each action - repo := &models.Repository{Id: act.RepoId, IsPrivate: true} + repo := &models.Repository{Id: act.RepoID, IsPrivate: true} if act.RepoUserName != ctx.User.LowerName { if has, _ := models.HasAccess(ctx.User, repo, models.ACCESS_MODE_READ); !has { continue @@ -261,8 +261,10 @@ func Email2User(ctx *middleware.Context) { ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name) } -func Issues(ctx *middleware.Context) { - ctx.Data["Title"] = "Your Issues" +func Issues(ctx *middleware.Context) { + ctx.Data["Title"] = ctx.Tr("issues") + ctx.Data["PageIsDashboard"] = true + ctx.Data["PageIsIssues"] = true viewType := ctx.Query("type") types := []string{"assigned", "created_by"} @@ -354,7 +356,7 @@ func Issues(ctx *middleware.Context) { issues[i].Repo, err = models.GetRepositoryById(issues[i].RepoId) if err != nil { - if err == models.ErrRepoNotExist { + if models.IsErrRepoNotExist(err) { log.Warn("user.Issues(GetRepositoryById #%d): repository not exist", issues[i].RepoId) continue } else { @@ -386,5 +388,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 a44d3b7e5d..20e6c06035 100644 --- a/routers/user/setting.go +++ b/routers/user/setting.go @@ -218,7 +218,7 @@ func SettingsEmailPost(ctx *middleware.Context, form auth.AddEmailForm) { if err := ctx.Cache.Put("MailResendLimit_"+ctx.User.LowerName, ctx.User.LowerName, 180); err != nil { log.Error(4, "Set cache(MailResendLimit) fail: %v", err) } - ctx.Flash.Success(ctx.Tr("settings.add_email_success_confirmation_email_sent")) + ctx.Flash.Info(ctx.Tr("settings.add_email_confirmation_sent", cleanEmail, setting.Service.ActiveCodeLives/60)) } else { ctx.Flash.Success(ctx.Tr("settings.add_email_success")) } @@ -451,20 +451,13 @@ func SettingsDelete(ctx *middleware.Context) { ctx.Data["PageIsSettingsDelete"] = true if ctx.Req.Method == "POST" { - // tmpUser := models.User{ - // Passwd: ctx.Query("password"), - // Salt: ctx.User.Salt, - // } - // tmpUser.EncodePasswd() - // if tmpUser.Passwd != ctx.User.Passwd { - // ctx.Flash.Error("Password is not correct. Make sure you are owner of this account.") - // } else { + // FIXME: validate password. if err := models.DeleteUser(ctx.User); err != nil { - switch err { - case models.ErrUserOwnRepos: + switch { + case models.IsErrUserOwnRepos(err): ctx.Flash.Error(ctx.Tr("form.still_own_repo")) ctx.Redirect(setting.AppSubUrl + "/user/settings/delete") - case models.ErrUserHasOrgs: + case models.IsErrUserHasOrgs(err): ctx.Flash.Error(ctx.Tr("form.still_has_org")) ctx.Redirect(setting.AppSubUrl + "/user/settings/delete") default: |