mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-29 15:13:53 +03:00
Repo permission bug fixes (#513)
This commit is contained in:
parent
ac51caa517
commit
6f4ba6884c
3 changed files with 7 additions and 35 deletions
|
@ -75,36 +75,6 @@ func APIContexter() macaron.Handler {
|
|||
}
|
||||
}
|
||||
|
||||
// ExtractOwnerAndRepo returns a handler that populates the `Repo.Owner` and
|
||||
// `Repo.Repository` fields of an APIContext
|
||||
func ExtractOwnerAndRepo() macaron.Handler {
|
||||
return func(ctx *APIContext) {
|
||||
owner, err := models.GetUserByName(ctx.Params(":username"))
|
||||
if err != nil {
|
||||
if models.IsErrUserNotExist(err) {
|
||||
ctx.Error(422, "", err)
|
||||
} else {
|
||||
ctx.Error(500, "GetUserByName", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
repo, err := models.GetRepositoryByName(owner.ID, ctx.Params(":reponame"))
|
||||
if err != nil {
|
||||
if models.IsErrRepoNotExist(err) {
|
||||
ctx.Status(404)
|
||||
} else {
|
||||
ctx.Error(500, "GetRepositoryByName", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
ctx.Repo.Owner = owner
|
||||
ctx.Data["Owner"] = owner
|
||||
ctx.Repo.Repository = repo
|
||||
ctx.Data["Repository"] = repo
|
||||
}
|
||||
}
|
||||
|
||||
// ReferencesGitRepo injects the GitRepo into the Context
|
||||
func ReferencesGitRepo() macaron.Handler {
|
||||
return func(ctx *APIContext) {
|
||||
|
|
|
@ -239,7 +239,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
m.Get("", user.IsStarring)
|
||||
m.Put("", user.Star)
|
||||
m.Delete("", user.Unstar)
|
||||
}, context.ExtractOwnerAndRepo())
|
||||
}, repoAssignment())
|
||||
})
|
||||
|
||||
m.Get("/subscriptions", user.GetMyWatchedRepos)
|
||||
|
@ -258,11 +258,9 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
|
||||
m.Group("/repos", func() {
|
||||
m.Post("/migrate", bind(auth.MigrateRepoForm{}), repo.Migrate)
|
||||
m.Combo("/:username/:reponame", context.ExtractOwnerAndRepo()).
|
||||
Get(repo.Get).
|
||||
Delete(repo.Delete)
|
||||
|
||||
m.Group("/:username/:reponame", func() {
|
||||
m.Combo("").Get(repo.Get).Delete(repo.Delete)
|
||||
m.Group("/hooks", func() {
|
||||
m.Combo("").Get(repo.ListHooks).
|
||||
Post(bind(api.CreateHookOption{}), repo.CreateHook)
|
||||
|
@ -330,7 +328,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
|||
m.Get("", user.IsWatching)
|
||||
m.Put("", user.Watch)
|
||||
m.Delete("", user.Unwatch)
|
||||
}, context.ExtractOwnerAndRepo())
|
||||
})
|
||||
m.Get("/editorconfig/:filename", context.RepoRef(), repo.GetEditorconfig)
|
||||
m.Group("/pulls", func() {
|
||||
m.Combo("").Get(bind(api.ListPullRequestsOptions{}), repo.ListPullRequests).Post(reqRepoWriter(), bind(api.CreatePullRequestOption{}), repo.CreatePullRequest)
|
||||
|
|
|
@ -275,6 +275,10 @@ func GetByID(ctx *context.APIContext) {
|
|||
// Delete one repository
|
||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories#delete
|
||||
func Delete(ctx *context.APIContext) {
|
||||
if !ctx.Repo.IsAdmin() {
|
||||
ctx.Error(403, "", "Must have admin rights")
|
||||
return
|
||||
}
|
||||
owner := ctx.Repo.Owner
|
||||
repo := ctx.Repo.Repository
|
||||
|
||||
|
|
Loading…
Reference in a new issue