Skip to content

Commit ce43d38

Browse files
authored
Fix session bug when introduce chi (#14287)
* Update go-chi session
1 parent 4614060 commit ce43d38

File tree

6 files changed

+30
-12
lines changed

6 files changed

+30
-12
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.14
55
require (
66
code.gitea.io/gitea-vet v0.2.1
77
code.gitea.io/sdk/gitea v0.13.1
8-
gitea.com/go-chi/session v0.0.0-20201218134809-7209fa084f27
8+
gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee
99
gitea.com/lunny/levelqueue v0.3.0
1010
gitea.com/macaron/binding v0.0.0-20190822013154-a5f53841ed2b
1111
gitea.com/macaron/cache v0.0.0-20200924044943-905232fba10b

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFj
4040
code.gitea.io/sdk/gitea v0.13.1 h1:Y7bpH2iO6Q0KhhMJfjP/LZ0AmiYITeRQlCD8b0oYqhk=
4141
code.gitea.io/sdk/gitea v0.13.1/go.mod h1:z3uwDV/b9Ls47NGukYM9XhnHtqPh/J+t40lsUrR6JDY=
4242
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
43-
gitea.com/go-chi/session v0.0.0-20201218134809-7209fa084f27 h1:cdb1OTNXGLwQ55gg+9tIPWufdsnrHWcIq8Qs+j/E8JU=
44-
gitea.com/go-chi/session v0.0.0-20201218134809-7209fa084f27/go.mod h1:Ozg8IchVNb/Udg+ui39iHRYqVHSvf3C99ixdpLR8Vu0=
43+
gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee h1:9U6HuKUBt/cGK6T/64dEuz0r7Yp97WAAEJvXHDlY3ws=
44+
gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee/go.mod h1:Ozg8IchVNb/Udg+ui39iHRYqVHSvf3C99ixdpLR8Vu0=
4545
gitea.com/lunny/levelqueue v0.3.0 h1:MHn1GuSZkxvVEDMyAPqlc7A3cOW+q8RcGhRgH/xtm6I=
4646
gitea.com/lunny/levelqueue v0.3.0/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
4747
gitea.com/lunny/log v0.0.0-20190322053110-01b5df579c4e h1:r1en/D7xJmcY24VkHkjkcJFa+7ZWubVWPBrvsHkmHxk=

routers/routes/chi.go

+14-2
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
176176
}
177177
}
178178

179+
var (
180+
sessionManager *session.Manager
181+
)
182+
179183
// NewChi creates a chi Router
180184
func NewChi() chi.Router {
181185
c := chi.NewRouter()
@@ -185,7 +189,8 @@ func NewChi() chi.Router {
185189
c.Use(LoggerHandler(setting.RouterLogLevel))
186190
}
187191
}
188-
c.Use(session.Sessioner(session.Options{
192+
193+
var opt = session.Options{
189194
Provider: setting.SessionConfig.Provider,
190195
ProviderConfig: setting.SessionConfig.ProviderConfig,
191196
CookieName: setting.SessionConfig.CookieName,
@@ -194,7 +199,14 @@ func NewChi() chi.Router {
194199
Maxlifetime: setting.SessionConfig.Maxlifetime,
195200
Secure: setting.SessionConfig.Secure,
196201
Domain: setting.SessionConfig.Domain,
197-
}))
202+
}
203+
opt = session.PrepareOptions([]session.Options{opt})
204+
205+
var err error
206+
sessionManager, err = session.NewManager(opt.Provider, opt)
207+
if err != nil {
208+
panic(err)
209+
}
198210

199211
c.Use(Recovery())
200212
if setting.EnableAccessLog {

routers/routes/recovery.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"code.gitea.io/gitea/modules/setting"
1515
"code.gitea.io/gitea/modules/templates"
1616

17-
"gitea.com/go-chi/session"
1817
"github.com/unrolled/render"
1918
)
2019

@@ -64,7 +63,13 @@ func Recovery() func(next http.Handler) http.Handler {
6463
log.Error("%v", combinedErr)
6564

6665
lc := middlewares.Locale(w, req)
67-
sess := session.GetSession(req)
66+
67+
// TODO: this should be replaced by real session after macaron removed totally
68+
sessionStore, err := sessionManager.Start(w, req)
69+
if err != nil {
70+
// Just invoke the above recover catch
71+
panic("session(start): " + err.Error())
72+
}
6873

6974
var store = dataStore{
7075
Data: templates.Vars{
@@ -75,7 +80,7 @@ func Recovery() func(next http.Handler) http.Handler {
7580
}
7681

7782
// Get user from session if logged in.
78-
user, _ := sso.SignedInUser(req, w, &store, sess)
83+
user, _ := sso.SignedInUser(req, w, &store, sessionStore)
7984
if user != nil {
8085
store.Data["IsSigned"] = true
8186
store.Data["SignedUser"] = user
@@ -92,7 +97,7 @@ func Recovery() func(next http.Handler) http.Handler {
9297
if setting.RunMode != "prod" {
9398
store.Data["ErrMsg"] = combinedErr
9499
}
95-
err := rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store.Data))
100+
err = rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store.Data))
96101
if err != nil {
97102
log.Error("%v", err)
98103
}

vendor/gitea.com/go-chi/session/session.go

+3-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ code.gitea.io/gitea-vet/checks
77
# code.gitea.io/sdk/gitea v0.13.1
88
## explicit
99
code.gitea.io/sdk/gitea
10-
# gitea.com/go-chi/session v0.0.0-20201218134809-7209fa084f27
10+
# gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee
1111
## explicit
1212
gitea.com/go-chi/session
1313
gitea.com/go-chi/session/couchbase

0 commit comments

Comments
 (0)