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.
This commit is contained in:
wxiaoguang 2023-12-30 16:48:34 +08:00 committed by GitHub
parent 3d474110c1
commit e5d8c4b8d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 7 additions and 16 deletions

View file

@ -261,16 +261,12 @@ func (opts FindSourcesOptions) ToConds() builder.Cond {
// IsSSPIEnabled returns true if there is at least one activated login // IsSSPIEnabled returns true if there is at least one activated login
// source of type LoginSSPI // source of type LoginSSPI
func IsSSPIEnabled(ctx context.Context) bool { func IsSSPIEnabled(ctx context.Context) bool {
if !db.HasEngine {
return false
}
exist, err := db.Exist[Source](ctx, FindSourcesOptions{ exist, err := db.Exist[Source](ctx, FindSourcesOptions{
IsActive: util.OptionalBoolTrue, IsActive: util.OptionalBoolTrue,
LoginType: SSPI, LoginType: SSPI,
}.ToConds()) }.ToConds())
if err != nil { if err != nil {
log.Error("Active SSPI Sources: %v", err) log.Error("IsSSPIEnabled: failed to query active SSPI sources: %v", err)
return false return false
} }
return exist return exist

View file

@ -27,9 +27,6 @@ var (
x *xorm.Engine x *xorm.Engine
tables []any tables []any
initFuncs []func() error initFuncs []func() error
// HasEngine specifies if we have a xorm.Engine
HasEngine bool
) )
// Engine represents a xorm engine or session. // Engine represents a xorm engine or session.

View file

@ -341,8 +341,7 @@ func loadServerFrom(rootCfg ConfigProvider) {
LandingPageURL = LandingPageOrganizations LandingPageURL = LandingPageOrganizations
case "login": case "login":
LandingPageURL = LandingPageLogin LandingPageURL = LandingPageLogin
case "": case "", "home":
case "home":
LandingPageURL = LandingPageHome LandingPageURL = LandingPageHome
default: default:
LandingPageURL = LandingPage(landingPage) LandingPageURL = LandingPage(landingPage)

View file

@ -37,7 +37,6 @@ func InitDBEngine(ctx context.Context) (err error) {
log.Info("Backing off for %d seconds", int64(setting.Database.DBConnectBackoff/time.Second)) log.Info("Backing off for %d seconds", int64(setting.Database.DBConnectBackoff/time.Second))
time.Sleep(setting.Database.DBConnectBackoff) time.Sleep(setting.Database.DBConnectBackoff)
} }
db.HasEngine = true
config.SetDynGetter(system_model.NewDatabaseDynKeyGetter()) config.SetDynGetter(system_model.NewDatabaseDynKeyGetter())
return nil return nil
} }

View file

@ -45,10 +45,6 @@ const (
// autoSignIn reads cookie and try to auto-login. // autoSignIn reads cookie and try to auto-login.
func autoSignIn(ctx *context.Context) (bool, error) { func autoSignIn(ctx *context.Context) (bool, error) {
if !db.HasEngine {
return false, nil
}
isSucceed := false isSucceed := false
defer func() { defer func() {
if !isSucceed { if !isSucceed {
@ -145,7 +141,11 @@ func CheckAutoLogin(ctx *context.Context) bool {
if isSucceed { if isSucceed {
middleware.DeleteRedirectToCookie(ctx.Resp) 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 return true
} }