From ea8ca5b5098d04bf5f6218ca099af32d20bb465f Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sat, 30 Dec 2023 20:50:08 +0800 Subject: [PATCH] Avoid cycle-redirecting user/login page (#28636) (#28658) Backport #28636 Fix #28231, and remove some unused code. (cherry picked from commit 2165729d16cbb56087f38c9c04f8ffb5ccf6fdc0) --- models/auth/source.go | 3 --- models/db/engine.go | 3 --- modules/setting/server.go | 3 +-- routers/common/db.go | 1 - routers/web/auth/auth.go | 10 +++++----- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/models/auth/source.go b/models/auth/source.go index 0351fa22fd..68bcaf43f1 100644 --- a/models/auth/source.go +++ b/models/auth/source.go @@ -276,9 +276,6 @@ func ActiveSources(tp Type) ([]*Source, error) { // IsSSPIEnabled returns true if there is at least one activated login // source of type LoginSSPI func IsSSPIEnabled() bool { - if !db.HasEngine { - return false - } sources, err := ActiveSources(SSPI) if err != nil { log.Error("ActiveSources: %v", err) diff --git a/models/db/engine.go b/models/db/engine.go index 0fcd4849bf..6591b496d6 100755 --- a/models/db/engine.go +++ b/models/db/engine.go @@ -30,9 +30,6 @@ var ( x *xorm.Engine tables []any initFuncs []func() error - - // HasEngine specifies if we have a xorm.Engine - HasEngine bool ) // Engine represents a xorm engine or session. diff --git a/modules/setting/server.go b/modules/setting/server.go index 964a8162f5..6c343760b4 100644 --- a/modules/setting/server.go +++ b/modules/setting/server.go @@ -343,8 +343,7 @@ func loadServerFrom(rootCfg ConfigProvider) { LandingPageURL = LandingPageOrganizations case "login": LandingPageURL = LandingPageLogin - case "": - case "home": + case "", "home": LandingPageURL = LandingPageHome default: LandingPageURL = LandingPage(landingPage) diff --git a/routers/common/db.go b/routers/common/db.go index 666ccd8677..d7dcfa0122 100644 --- a/routers/common/db.go +++ b/routers/common/db.go @@ -37,7 +37,6 @@ func InitDBEngine(ctx context.Context) (err error) { log.Info("Backing off for %d seconds", int64(setting.Database.DBConnectBackoff/time.Second)) time.Sleep(setting.Database.DBConnectBackoff) } - db.HasEngine = true config.SetDynGetter(system_model.NewDatabaseDynKeyGetter()) return nil } diff --git a/routers/web/auth/auth.go b/routers/web/auth/auth.go index 465077a909..a8a911b103 100644 --- a/routers/web/auth/auth.go +++ b/routers/web/auth/auth.go @@ -46,10 +46,6 @@ const ( // AutoSignIn reads cookie and try to auto-login. func AutoSignIn(ctx *context.Context) (bool, error) { - if !db.HasEngine { - return false, nil - } - uname := ctx.GetSiteCookie(setting.CookieUserName) if len(uname) == 0 { return false, nil @@ -131,7 +127,11 @@ func checkAutoLogin(ctx *context.Context) bool { if isSucceed { middleware.DeleteRedirectToCookie(ctx.Resp) - ctx.RedirectToFirst(redirectTo, setting.AppSubURL+string(setting.LandingPageURL)) + nextRedirectTo := setting.AppSubURL + string(setting.LandingPageURL) + if setting.LandingPageURL == setting.LandingPageLogin { + nextRedirectTo = setting.AppSubURL + "/" // do not cycle-redirect to the login page + } + ctx.RedirectToFirst(redirectTo, nextRedirectTo) return true }