Skip to content

Commit 6f25aac

Browse files
committed
Fix session bug when introduce chi
1 parent 4614060 commit 6f25aac

File tree

2 files changed

+62
-6
lines changed

2 files changed

+62
-6
lines changed

routers/routes/chi.go

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,50 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor
176176
}
177177
}
178178

179+
var (
180+
sessionManager *session.Manager
181+
)
182+
183+
func prepareOptions(options []session.Options) session.Options {
184+
var opt session.Options
185+
if len(options) > 0 {
186+
opt = options[0]
187+
}
188+
189+
if len(opt.Provider) == 0 {
190+
opt.Provider = "memory"
191+
}
192+
if len(opt.ProviderConfig) == 0 {
193+
opt.ProviderConfig = "data/sessions"
194+
}
195+
if len(opt.CookieName) == 0 {
196+
opt.CookieName = "MacaronSession"
197+
}
198+
if len(opt.CookiePath) == 0 {
199+
opt.CookiePath = "/"
200+
}
201+
if opt.Gclifetime == 0 {
202+
opt.Gclifetime = 3600
203+
}
204+
if opt.Maxlifetime == 0 {
205+
opt.Maxlifetime = opt.Gclifetime
206+
}
207+
if !opt.Secure {
208+
opt.Secure = false
209+
}
210+
if opt.IDLength == 0 {
211+
opt.IDLength = 16
212+
}
213+
if len(opt.FlashEncryptionKey) == 0 {
214+
opt.FlashEncryptionKey = ""
215+
}
216+
if len(opt.FlashEncryptionKey) == 0 {
217+
opt.FlashEncryptionKey, _ = session.NewSecret()
218+
}
219+
220+
return opt
221+
}
222+
179223
// NewChi creates a chi Router
180224
func NewChi() chi.Router {
181225
c := chi.NewRouter()
@@ -185,7 +229,8 @@ func NewChi() chi.Router {
185229
c.Use(LoggerHandler(setting.RouterLogLevel))
186230
}
187231
}
188-
c.Use(session.Sessioner(session.Options{
232+
233+
var opt = session.Options{
189234
Provider: setting.SessionConfig.Provider,
190235
ProviderConfig: setting.SessionConfig.ProviderConfig,
191236
CookieName: setting.SessionConfig.CookieName,
@@ -194,7 +239,14 @@ func NewChi() chi.Router {
194239
Maxlifetime: setting.SessionConfig.Maxlifetime,
195240
Secure: setting.SessionConfig.Secure,
196241
Domain: setting.SessionConfig.Domain,
197-
}))
242+
}
243+
opt = prepareOptions([]session.Options{opt})
244+
245+
var err error
246+
sessionManager, err = session.NewManager(opt.Provider, opt)
247+
if err != nil {
248+
panic(err)
249+
}
198250

199251
c.Use(Recovery())
200252
if setting.EnableAccessLog {

routers/routes/recovery.go

Lines changed: 8 additions & 4 deletions
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,12 @@ 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+
sessionStore, err := sessionManager.Start(w, req)
68+
if err != nil {
69+
// Just invoke the above recover catch
70+
panic("session(start): " + err.Error())
71+
}
6872

6973
var store = dataStore{
7074
Data: templates.Vars{
@@ -75,7 +79,7 @@ func Recovery() func(next http.Handler) http.Handler {
7579
}
7680

7781
// Get user from session if logged in.
78-
user, _ := sso.SignedInUser(req, w, &store, sess)
82+
user, _ := sso.SignedInUser(req, w, &store, sessionStore)
7983
if user != nil {
8084
store.Data["IsSigned"] = true
8185
store.Data["SignedUser"] = user
@@ -92,7 +96,7 @@ func Recovery() func(next http.Handler) http.Handler {
9296
if setting.RunMode != "prod" {
9397
store.Data["ErrMsg"] = combinedErr
9498
}
95-
err := rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store.Data))
99+
err = rnd.HTML(w, 500, "status/500", templates.BaseVars().Merge(store.Data))
96100
if err != nil {
97101
log.Error("%v", err)
98102
}

0 commit comments

Comments
 (0)