2023-11-02 22:14:33 +08:00
// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package web
import (
"net/http"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/web/repo"
context_service "code.gitea.io/gitea/services/context"
)
func requireSignIn ( ctx * context . Context ) {
if ! setting . Service . RequireSignInView {
return
}
// rely on the results of Contexter
if ! ctx . IsSigned {
// TODO: support digit auth - which would be Authorization header with digit
ctx . Resp . Header ( ) . Set ( "WWW-Authenticate" , ` Basic realm="Gitea" ` )
ctx . Error ( http . StatusUnauthorized )
}
}
func gitHTTPRouters ( m * web . Route ) {
m . Group ( "" , func ( ) {
2023-12-25 20:13:18 +08:00
m . Methods ( "POST,OPTIONS" , "/git-upload-pack" , repo . ServiceUploadPack )
m . Methods ( "POST,OPTIONS" , "/git-receive-pack" , repo . ServiceReceivePack )
m . Methods ( "GET,OPTIONS" , "/info/refs" , repo . GetInfoRefs )
m . Methods ( "GET,OPTIONS" , "/HEAD" , repo . GetTextFile ( "HEAD" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/alternates" , repo . GetTextFile ( "objects/info/alternates" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/http-alternates" , repo . GetTextFile ( "objects/info/http-alternates" ) )
m . Methods ( "GET,OPTIONS" , "/objects/info/packs" , repo . GetInfoPacks )
m . Methods ( "GET,OPTIONS" , "/objects/info/{file:[^/]*}" , repo . GetTextFile ( "" ) )
2024-01-19 16:05:02 +00:00
m . Methods ( "GET,OPTIONS" , "/objects/{head:[0-9a-f]{2}}/{hash:[0-9a-f]{38,62}}" , repo . GetLooseObject )
m . Methods ( "GET,OPTIONS" , "/objects/pack/pack-{file:[0-9a-f]{40,64}}.pack" , repo . GetPackFile )
m . Methods ( "GET,OPTIONS" , "/objects/pack/pack-{file:[0-9a-f]{40,64}}.idx" , repo . GetIdxFile )
2023-11-02 22:14:33 +08:00
} , ignSignInAndCsrf , requireSignIn , repo . HTTPGitEnabledHandler , repo . CorsHandler ( ) , context_service . UserAssignmentWeb ( ) )
}