summaryrefslogtreecommitdiffstats
path: root/routers/common
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-04-27 14:06:45 +0800
committerGitHub <noreply@github.com>2023-04-27 02:06:45 -0400
commit92fd3fc4fd369b6a8c0a022a32a80dec2340223a (patch)
treec721a4988b5ec250a029b19274ef1c2dc4c19faa /routers/common
parent1c875ef5bef206b8214c33437f65af929967df46 (diff)
downloadgitea-92fd3fc4fd369b6a8c0a022a32a80dec2340223a.tar.gz
gitea-92fd3fc4fd369b6a8c0a022a32a80dec2340223a.zip
Refactor "route" related code, fix Safari cookie bug (#24330)
Fix #24176 Clean some misuses of route package, clean some legacy FIXMEs --------- Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'routers/common')
-rw-r--r--routers/common/middleware.go39
1 files changed, 26 insertions, 13 deletions
diff --git a/routers/common/middleware.go b/routers/common/middleware.go
index 2abdcb583d..28ecf934e1 100644
--- a/routers/common/middleware.go
+++ b/routers/common/middleware.go
@@ -15,24 +15,23 @@ import (
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/web/routing"
+ "gitea.com/go-chi/session"
"github.com/chi-middleware/proxy"
chi "github.com/go-chi/chi/v5"
)
-// Middlewares returns common middlewares
-func Middlewares() []func(http.Handler) http.Handler {
- handlers := []func(http.Handler) http.Handler{
- func(next http.Handler) http.Handler {
- return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
- // First of all escape the URL RawPath to ensure that all routing is done using a correctly escaped URL
- req.URL.RawPath = req.URL.EscapedPath()
+// ProtocolMiddlewares returns HTTP protocol related middlewares
+func ProtocolMiddlewares() (handlers []any) {
+ handlers = append(handlers, func(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(resp http.ResponseWriter, req *http.Request) {
+ // First of all escape the URL RawPath to ensure that all routing is done using a correctly escaped URL
+ req.URL.RawPath = req.URL.EscapedPath()
- ctx, _, finished := process.GetManager().AddTypedContext(req.Context(), fmt.Sprintf("%s: %s", req.Method, req.RequestURI), process.RequestProcessType, true)
- defer finished()
- next.ServeHTTP(context.NewResponse(resp), req.WithContext(cache.WithCacheContext(ctx)))
- })
- },
- }
+ ctx, _, finished := process.GetManager().AddTypedContext(req.Context(), fmt.Sprintf("%s: %s", req.Method, req.RequestURI), process.RequestProcessType, true)
+ defer finished()
+ next.ServeHTTP(context.NewResponse(resp), req.WithContext(cache.WithCacheContext(ctx)))
+ })
+ })
if setting.ReverseProxyLimit > 0 {
opt := proxy.NewForwardedHeadersOptions().
@@ -112,3 +111,17 @@ func stripSlashesMiddleware(next http.Handler) http.Handler {
next.ServeHTTP(resp, req)
})
}
+
+func Sessioner() func(next http.Handler) http.Handler {
+ return session.Sessioner(session.Options{
+ Provider: setting.SessionConfig.Provider,
+ ProviderConfig: setting.SessionConfig.ProviderConfig,
+ CookieName: setting.SessionConfig.CookieName,
+ CookiePath: setting.SessionConfig.CookiePath,
+ Gclifetime: setting.SessionConfig.Gclifetime,
+ Maxlifetime: setting.SessionConfig.Maxlifetime,
+ Secure: setting.SessionConfig.Secure,
+ SameSite: setting.SessionConfig.SameSite,
+ Domain: setting.SessionConfig.Domain,
+ })
+}