Browse Source

Check for access in /repositories/:id (#2227)

* Check for access in /repositories/:id

* Integration test
tags/v1.21.12.1
Ethan Koenig Lunny Xiao 8 years ago
parent
commit
49df677c47
2 changed files with 12 additions and 1 deletions
  1. +8
    -0
      integrations/api_repo_test.go
  2. +4
    -1
      routers/api/v1/repo/repo.go

+ 8
- 0
integrations/api_repo_test.go View File

@@ -84,3 +84,11 @@ func TestAPIOrgRepos(t *testing.T) {
assert.False(t, repo.Private)
}
}

func TestAPIGetRepoByIDUnauthorized(t *testing.T) {
prepareTestEnv(t)
user := models.AssertExistsAndLoadBean(t, &models.User{ID: 4}).(*models.User)
sess := loginUser(t, user.Name)
req := NewRequestf(t, "GET", "/api/v1/repositories/2")
sess.MakeRequest(t, req, http.StatusNotFound)
}

+ 4
- 1
routers/api/v1/repo/repo.go View File

@@ -293,7 +293,10 @@ func GetByID(ctx *context.APIContext) {

access, err := models.AccessLevel(ctx.User.ID, repo)
if err != nil {
ctx.Error(500, "GetRepositoryByID", err)
ctx.Error(500, "AccessLevel", err)
return
} else if access < models.AccessModeRead {
ctx.Status(404)
return
}
ctx.JSON(200, repo.APIFormat(access))


Loading…
Cancel
Save