aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-12-30 16:48:34 +0800
committerGitHub <noreply@github.com>2023-12-30 08:48:34 +0000
commite5d8c4b8d4864661caa43516d5937be42bf27f7c (patch)
treebad9873a26ec0f8ab74b9a157df6224dd1893c1c
parent3d474110c181df7854576d78e46209908f7e1b52 (diff)
downloadgitea-e5d8c4b8d4864661caa43516d5937be42bf27f7c.tar.gz
gitea-e5d8c4b8d4864661caa43516d5937be42bf27f7c.zip
Avoid cycle-redirecting user/login page (#28636)
Fix #28231, and remove some unused code. The `db.HasEngine` doesn't seem useful because the db engine is always initialized before web route.
-rw-r--r--models/auth/source.go6
-rwxr-xr-xmodels/db/engine.go3
-rw-r--r--modules/setting/server.go3
-rw-r--r--routers/common/db.go1
-rw-r--r--routers/web/auth/auth.go10
5 files changed, 7 insertions, 16 deletions
diff --git a/models/auth/source.go b/models/auth/source.go
index 8a372c1429..1bdde8235c 100644
--- a/models/auth/source.go
+++ b/models/auth/source.go
@@ -261,16 +261,12 @@ func (opts FindSourcesOptions) ToConds() builder.Cond {
// IsSSPIEnabled returns true if there is at least one activated login
// source of type LoginSSPI
func IsSSPIEnabled(ctx context.Context) bool {
- if !db.HasEngine {
- return false
- }
-
exist, err := db.Exist[Source](ctx, FindSourcesOptions{
IsActive: util.OptionalBoolTrue,
LoginType: SSPI,
}.ToConds())
if err != nil {
- log.Error("Active SSPI Sources: %v", err)
+ log.Error("IsSSPIEnabled: failed to query active SSPI sources: %v", err)
return false
}
return exist
diff --git a/models/db/engine.go b/models/db/engine.go
index 182d8cd993..99906813ca 100755
--- a/models/db/engine.go
+++ b/models/db/engine.go
@@ -27,9 +27,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 80b85eeebd..c09b91612a 100644
--- a/modules/setting/server.go
+++ b/modules/setting/server.go
@@ -341,8 +341,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 547f727ce2..a67c9582fa 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 8f37d05fda..21a72a9521 100644
--- a/routers/web/auth/auth.go
+++ b/routers/web/auth/auth.go
@@ -45,10 +45,6 @@ const (
// autoSignIn reads cookie and try to auto-login.
func autoSignIn(ctx *context.Context) (bool, error) {
- if !db.HasEngine {
- return false, nil
- }
-
isSucceed := false
defer func() {
if !isSucceed {
@@ -145,7 +141,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
}