@ -191,14 +191,14 @@ func reqToken() macaron.Handler {
ctx . RequireCSRF ( )
return
}
ctx . Context . Error ( http . StatusUnauthorized )
ctx . Error ( http . StatusUnauthorized , "reqToken" , "token is required" )
}
}
func reqBasicAuth ( ) macaron . Handler {
return func ( ctx * context . APIContext ) {
if ! ctx . Context . IsBasicAuth {
ctx . Context . Error ( http . StatusUnauthorized )
ctx . Error ( http . StatusUnauthorized , "reqBasicAuth" , "basic auth required" )
return
}
ctx . CheckForOTP ( )
@ -207,9 +207,9 @@ func reqBasicAuth() macaron.Handler {
// reqSiteAdmin user should be the site admin
func reqSiteAdmin ( ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqSiteAdmin" , "user should be the site admin" )
return
}
}
@ -217,9 +217,9 @@ func reqSiteAdmin() macaron.Handler {
// reqOwner user should be the owner of the repo or site admin.
func reqOwner ( ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserRepoOwner ( ) && ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqOwner" , "user should be the owner of the repo" )
return
}
}
@ -227,9 +227,9 @@ func reqOwner() macaron.Handler {
// reqAdmin user should be an owner or a collaborator with admin write of a repository, or site admin
func reqAdmin ( ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserRepoAdmin ( ) && ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqAdmin" , "user should be an owner or a collaborator with admin write of a repository" )
return
}
}
@ -237,9 +237,9 @@ func reqAdmin() macaron.Handler {
// reqRepoWriter user should have a permission to write to a repo, or be a site admin
func reqRepoWriter ( unitTypes ... models . UnitType ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserRepoWriter ( unitTypes ) && ! ctx . IsUserRepoAdmin ( ) && ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqRepoWriter" , "user should have a permission to write to a repo" )
return
}
}
@ -247,9 +247,9 @@ func reqRepoWriter(unitTypes ...models.UnitType) macaron.Handler {
// reqRepoReader user should have specific read permission or be a repo admin or a site admin
func reqRepoReader ( unitType models . UnitType ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserRepoReaderSpecific ( unitType ) && ! ctx . IsUserRepoAdmin ( ) && ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqRepoReader" , "user should have specific read permission or be a repo admin or a site admin" )
return
}
}
@ -257,9 +257,9 @@ func reqRepoReader(unitType models.UnitType) macaron.Handler {
// reqAnyRepoReader user should have any permission to read repository or permissions of site admin
func reqAnyRepoReader ( ) macaron . Handler {
return func ( ctx * context . Context ) {
return func ( ctx * context . API Context) {
if ! ctx . IsUserRepoReaderAny ( ) && ! ctx . IsUserSiteAdmin ( ) {
ctx . Error ( http . StatusForbidden )
ctx . Error ( http . StatusForbidden , "reqAnyRepoReader" , "user should have any permission to read repository or permissions of site admin" )
return
}
}
@ -502,7 +502,6 @@ func mustNotBeArchived(ctx *context.APIContext) {
}
// RegisterRoutes registers all v1 APIs routes to web application.
// FIXME: custom form error response
func RegisterRoutes ( m * macaron . Macaron ) {
bind := binding . Bind
@ -641,7 +640,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m . Group ( "/:username/:reponame" , func ( ) {
m . Combo ( "" ) . Get ( reqAnyRepoReader ( ) , repo . Get ) .
Delete ( reqToken ( ) , reqOwner ( ) , repo . Delete ) .
Patch ( reqToken ( ) , reqAdmin ( ) , bind ( api . EditRepoOption { } ) , context . RepoRef ( ) , repo . Edit )
Patch ( reqToken ( ) , reqAdmin ( ) , bind ( api . EditRepoOption { } ) , context . RepoRefForAPI ( ) , repo . Edit )
m . Post ( "/transfer" , reqOwner ( ) , bind ( api . TransferRepoOption { } ) , repo . Transfer )
m . Combo ( "/notifications" ) .
Get ( reqToken ( ) , notify . ListRepoNotifications ) .
@ -653,7 +652,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m . Combo ( "" ) . Get ( repo . GetHook ) .
Patch ( bind ( api . EditHookOption { } ) , repo . EditHook ) .
Delete ( repo . DeleteHook )
m . Post ( "/tests" , context . RepoRef ( ) , repo . TestHook )
m . Post ( "/tests" , context . RepoRefForAPI ( ) , repo . TestHook )
} )
m . Group ( "/git" , func ( ) {
m . Combo ( "" ) . Get ( repo . ListGitHooks )
@ -670,14 +669,14 @@ func RegisterRoutes(m *macaron.Macaron) {
Put ( reqAdmin ( ) , bind ( api . AddCollaboratorOption { } ) , repo . AddCollaborator ) .
Delete ( reqAdmin ( ) , repo . DeleteCollaborator )
} , reqToken ( ) )
m . Get ( "/raw/*" , context . RepoRefByType ( context . RepoRefAny ) , reqRepoReader ( models . UnitTypeCode ) , repo . GetRawFile )
m . Get ( "/raw/*" , context . RepoRefForAPI ( ) , reqRepoReader ( models . UnitTypeCode ) , repo . GetRawFile )
m . Get ( "/archive/*" , reqRepoReader ( models . UnitTypeCode ) , repo . GetArchive )
m . Combo ( "/forks" ) . Get ( repo . ListForks ) .
Post ( reqToken ( ) , reqRepoReader ( models . UnitTypeCode ) , bind ( api . CreateForkOption { } ) , repo . CreateFork )
m . Group ( "/branches" , func ( ) {
m . Get ( "" , repo . ListBranches )
m . Get ( "/*" , context . RepoRefByType ( context . RepoRefBranch ) , repo . GetBranch )
m . Delete ( "/*" , reqRepoWriter ( models . UnitTypeCode ) , context . RepoRefByType ( context . RepoRefBranch ) , repo . DeleteBranch )
m . Get ( "/*" , repo . GetBranch )
m . Delete ( "/*" , context . ReferencesGitRepo ( false ) , reqRepoWriter ( models . UnitTypeCode ) , repo . DeleteBranch )
m . Post ( "" , reqRepoWriter ( models . UnitTypeCode ) , bind ( api . CreateBranchRepoOption { } ) , repo . CreateBranch )
} , reqRepoReader ( models . UnitTypeCode ) )
m . Group ( "/branch_protections" , func ( ) {
@ -804,7 +803,7 @@ func RegisterRoutes(m *macaron.Macaron) {
} )
} , reqRepoReader ( models . UnitTypeReleases ) )
m . Post ( "/mirror-sync" , reqToken ( ) , reqRepoWriter ( models . UnitTypeCode ) , repo . MirrorSync )
m . Get ( "/editorconfig/:filename" , context . RepoRef ( ) , reqRepoReader ( models . UnitTypeCode ) , repo . GetEditorconfig )
m . Get ( "/editorconfig/:filename" , context . RepoRefForAPI ( ) , reqRepoReader ( models . UnitTypeCode ) , repo . GetEditorconfig )
m . Group ( "/pulls" , func ( ) {
m . Combo ( "" ) . Get ( bind ( api . ListPullRequestsOptions { } ) , repo . ListPullRequests ) .
Post ( reqToken ( ) , mustNotBeArchived , bind ( api . CreatePullRequestOption { } ) , repo . CreatePullRequest )
@ -851,9 +850,9 @@ func RegisterRoutes(m *macaron.Macaron) {
} )
m . Get ( "/refs" , repo . GetGitAllRefs )
m . Get ( "/refs/*" , repo . GetGitRefs )
m . Get ( "/trees/:sha" , context . RepoRef ( ) , repo . GetTree )
m . Get ( "/blobs/:sha" , context . RepoRef ( ) , repo . GetBlob )
m . Get ( "/tags/:sha" , context . RepoRef ( ) , repo . GetTag )
m . Get ( "/trees/:sha" , context . RepoRefForAPI ( ) , repo . GetTree )
m . Get ( "/blobs/:sha" , context . RepoRefForAPI ( ) , repo . GetBlob )
m . Get ( "/tags/:sha" , context . RepoRefForAPI ( ) , repo . GetTag )
} , reqRepoReader ( models . UnitTypeCode ) )
m . Group ( "/contents" , func ( ) {
m . Get ( "" , repo . GetContentsList )