aboutsummaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
Diffstat (limited to 'routers')
-rw-r--r--routers/admin/users.go13
-rw-r--r--routers/api/v1/repo.go6
-rw-r--r--routers/org/members.go4
-rw-r--r--routers/org/setting.go7
-rw-r--r--routers/org/teams.go4
-rw-r--r--routers/repo/http.go47
-rw-r--r--routers/repo/issue.go8
-rw-r--r--routers/repo/repo.go12
-rw-r--r--routers/repo/setting.go3
-rw-r--r--routers/repo/view.go6
-rw-r--r--routers/user/home.go15
-rw-r--r--routers/user/setting.go17
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: